Java中的System

Java 中的 System 类是一个包含几个有用类字段和方法的 final 类。它提供对标准输入、输出和错误输出流的访问,以及对系统属性和环境变量的访问,还有一些用于操作数组的方法。以下是 System 类的详细说明和代码示例。

类字段

  • System.in: 标准输入流,通常用于从键盘读取数据。
  • System.out: 标准输出流,通常用于将数据输出到控制台。
  • System.err: 标准错误流,通常用于将错误信息输出到控制台。

方法

时间和计时
  • currentTimeMillis(): 返回自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数。
  • nanoTime(): 返回一个用于时间测量的高精度时间值。
系统属性和环境变量
  • getProperties(): 返回表示当前系统属性集的 Properties 对象。
  • getProperty(String key): 获取指定键的系统属性。
  • setProperty(String key, String value): 设置系统属性。
  • clearProperty(String key): 删除指定键的系统属性。
  • getenv(): 返回当前系统环境变量的映射。
  • getenv(String name): 获取指定环境变量的值。
数组复制
  • arraycopy(Object src, int srcPos, Object dest, int destPos, int length): 从源数组复制一个数组,从指定的位置开始,到目标数组的指定位置结束。
系统操作
  • exit(int status): 终止当前运行的 Java 虚拟机。
  • gc(): 运行垃圾回收器。
  • runFinalization(): 运行任何等待终止的对象的终结方法。
  • load(String filename): 加载本机库。
  • loadLibrary(String libname): 加载本机库。

代码示例

import java.util.Map;
import java.util.Properties;

public class SystemAPIDemo {
    public static void main(String[] args) {
        // 时间和计时
        long millis = System.currentTimeMillis();
        System.out.println("Current time in milliseconds: " + millis);
        
        long nanos = System.nanoTime();
        System.out.println("Current time in nanoseconds: " + nanos);
        
        // 系统属性
        Properties props = System.getProperties();
        System.out.println("Java Home: " + props.getProperty("java.home"));
        System.out.println("Java Version: " + props.getProperty("java.version"));
        
        // 设置和清除系统属性
        System.setProperty("custom.property", "Custom Value");
        System.out.println("Custom Property: " + System.getProperty("custom.property"));
        System.clearProperty("custom.property");
        
        // 环境变量
        Map<String, String> env = System.getenv();
        System.out.println("JAVA_HOME: " + env.get("JAVA_HOME"));
        System.out.println("PATH: " + env.get("PATH"));
        
        // 数组复制
        char[] original = {'a', 'b', 'c', 'd', 'e'};
        char[] copy = new char[3];
        System.arraycopy(original, 2, copy, 0, 3);
        System.out.println("Copied array: " + new String(copy));
        
        // 系统操作(通常不建议在程序中调用 exit)
        // System.exit(0); // 将终止当前 JVM
        
        // 垃圾回收请求(不保证立即执行)
        System.gc();
        
        // 运行终结器
        System.runFinalization();
    }
}

请注意,虽然 System 类提供了强大的功能,但是某些方法(如 exitgc)可能会对应用程序的稳定性和行为产生重大影响,因此应该谨慎使用。例如,System.exit 通常用于终止程序,但在实际应用中,通常更推荐让程序自然结束,而不是强制退出。gc() 方法只是建议 JVM 运行垃圾回收器,但并不保证立即执行。

相关推荐
LyaJpunov几秒前
C++中move和forword的区别
开发语言·c++
AskHarries4 分钟前
利用反射实现动态代理
java·后端·reflect
@月落4 分钟前
alibaba获得店铺的所有商品 API接口
java·大数据·数据库·人工智能·学习
程序猿练习生5 分钟前
C++速通LeetCode中等第9题-合并区间
开发语言·c++·leetcode
liuyang-neu10 分钟前
力扣 42.接雨水
java·算法·leetcode
z千鑫14 分钟前
【人工智能】如何利用AI轻松将java,c++等代码转换为Python语言?程序员必读
java·c++·人工智能·gpt·agent·ai编程·ai工具
一名路过的小码农15 分钟前
C/C++动态库函数导出 windows
c语言·开发语言·c++
m0_6312704018 分钟前
标准c语言(一)
c语言·开发语言·算法
万河归海42818 分钟前
C语言——二分法搜索数组中特定元素并返回下标
c语言·开发语言·数据结构·经验分享·笔记·算法·visualstudio
Messiah___23 分钟前
【论文阅读】Slim Fly: A Cost Effective Low-Diameter Network Topology 一种经济高效的小直径网络拓扑
开发语言·php