java: system类
System
类是 Java 中的一个核心类,位于 java.lang
包中。它提供了与系统相关的功能,包括标准输入、标准输出、错误输出、环境变量、系统属性、垃圾回收等。System
类中的所有方法和属性都是静态的,因此可以直接通过类名调用,而不需要创建实例。
以下是 System
类的主要功能和方法:
1. 标准输入输出流
System
类提供了三个标准的流,用于与用户交互:
System.in
: 标准输入流(通常是键盘输入),类型为InputStream
。System.out
: 标准输出流(通常是控制台),类型为PrintStream
。System.err
: 标准错误输出流(通常是控制台),类型为PrintStream
。
示例:
System.out.println("This is standard output"); // 输出到控制台
System.err.println("This is an error message"); // 输出错误信息到控制台
2. 系统属性
System
类提供了访问和修改系统属性的方法。系统属性是键值对的形式,存储了与系统相关的信息(如操作系统名称、Java 版本等)。
System.getProperty(String key)
: 获取指定键的系统属性值。System.setProperty(String key, String value)
: 设置系统属性。System.getProperties()
: 获取所有系统属性。
示例:
String osName = System.getProperty("os.name"); // 获取操作系统名称
String javaVersion = System.getProperty("java.version"); // 获取 Java 版本
System.out.println("OS: " + osName);
System.out.println("Java Version: " + javaVersion);
3. 环境变量
System
类可以访问操作系统的环境变量。
System.getenv(String name)
: 获取指定名称的环境变量值。System.getenv()
: 获取所有环境变量。
示例:
String path = System.getenv("PATH"); // 获取 PATH 环境变量
System.out.println("PATH: " + path);
4. 时间和计时
System.currentTimeMillis()
: 返回当前时间的毫秒数(从 1970 年 1 月 1 日 UTC 开始计算)。System.nanoTime()
: 返回当前时间的纳秒数(用于高精度计时)。
示例:
long startTime = System.currentTimeMillis();
// 执行一些操作
long endTime = System.currentTimeMillis();
System.out.println("Time taken: " + (endTime - startTime) + " ms");
5. 垃圾回收
System.gc()
: 建议 JVM 执行垃圾回收(注意:这只是一个建议,JVM 不一定会立即执行)。
示例:
System.gc(); // 建议进行垃圾回收
6. 退出程序
System.exit(int status)
: 终止当前运行的 Java 虚拟机。status
参数为退出状态码,通常0
表示正常退出,非零值表示异常退出。
示例:
System.exit(0); // 正常退出程序
7. 数组复制
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
: 复制数组的一部分到另一个数组。
示例:
int[] src = {1, 2, 3, 4, 5};
int[] dest = new int[5];
System.arraycopy(src, 0, dest, 0, src.length); // 复制 src 到 dest
System.out.println(Arrays.toString(dest)); // 输出: [1, 2, 3, 4, 5]
8. 安全管理器
System.getSecurityManager()
: 获取当前的安全管理器。System.setSecurityManager(SecurityManager sm)
: 设置安全管理器。
9. 其他方法
System.console()
: 返回与当前 Java 虚拟机关联的Console
对象(用于交互式输入)。System.lineSeparator()
: 返回系统的行分隔符(如\n
或\r\n
)。
示例代码
以下是一个综合示例,展示了 System
类的常用功能:
public class SystemExample {
public static void main(String[] args) {
// 标准输出
System.out.println("Hello, World!");
// 系统属性
String osName = System.getProperty("os.name");
System.out.println("Operating System: " + osName);
// 环境变量
String path = System.getenv("PATH");
System.out.println("PATH: " + path);
// 时间
long startTime = System.currentTimeMillis();
System.out.println("Current Time in ms: " + startTime);
// 数组复制
int[] src = {1, 2, 3, 4, 5};
int[] dest = new int[5];
System.arraycopy(src, 0, dest, 0, src.length);
System.out.println("Copied Array: " + Arrays.toString(dest));
// 退出程序
System.exit(0);
}
}
总结
System
类是 Java 中非常重要的工具类,提供了与系统交互的多种功能。它的方法都是静态的,使用起来非常方便。常见的用途包括:
- 标准输入输出(
System.in
、System.out
、System.err
)。 - 获取系统属性和环境变量。
- 计时和性能测试。
- 数组复制和程序退出等。