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