例:System.out.println()
1. System类简介
System
类是 Java java.lang
包中的一个工具类,提供了一系列与标准输入、输出、错误流、JVM 运行环境、垃圾回收、时间获取等相关的方法。它的所有方法和字段都是 static
,可以直接调用,无需创建实例。
import java.lang.System;
2. System类常用方法详解
2.1 标准输入、输出和错误流
System
提供了 in
、out
和 err
三个流:
方法 | 说明 |
---|---|
System.out | 标准输出流(默认连接到控制台) |
System.err | 标准错误流(默认连接到控制台) |
System.in | 标准输入流(默认从键盘输入) |
示例代码:
public class SystemExample {
public static void main(String[] args) {
System.out.println("标准输出: Hello, World!");
System.err.println("标准错误: 发生错误");
}
}
2.2 获取当前时间(时间戳)
方法 | 说明 | 示例 |
---|---|---|
System.currentTimeMillis() | 返回当前时间(毫秒) | System.currentTimeMillis() |
System.nanoTime() | 返回当前时间(纳秒) | System.nanoTime() |
示例代码:
long millis = System.currentTimeMillis();
long nanos = System.nanoTime();
System.out.println("当前时间(毫秒): " + millis);
System.out.println("当前时间(纳秒): " + nanos);
2.3 终止JVM
方法 | 说明 |
---|---|
System.exit(status) | 终止 JVM 运行,status=0 表示正常退出,非 0 表示异常退出 |
示例代码:
System.out.println("程序即将终止");
System.exit(0);// 0:表示当前虚拟机是正常停止 1:异常停止
System.out.println("这行代码不会被执行");
2.4 数组拷贝
方法 | 说明 |
---|---|
System.arraycopy(src, srcPos, dest, destPos, length) System.arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数) // 起始索引分别指向各自前面参数数组 | 高效复制数组元素 |
示例代码:
int[] src = {1, 2, 3, 4, 5};
int[] dest = new int[5];
System.arraycopy(src, 0, dest, 0, src.length);
System.out.println(java.util.Arrays.toString(dest)); // [1, 2, 3, 4, 5]
// 数组基本类型要一致,不然报错
// 确保拷贝的数组长度够用 不然报错
2.5 获取环境变量和系统属性
方法 | 说明 |
---|---|
System.getenv(String name) | 获取环境变量 |
System.getProperty(String key) | 获取系统属性 |
示例代码:
System.out.println("JAVA_HOME: " + System.getenv("JAVA_HOME"));
System.out.println("操作系统: " + System.getProperty("os.name"));
System.out.println("Java 版本: " + System.getProperty("java.version"));
2.6 垃圾回收
方法 | 说明 |
---|---|
System.gc() | 提示 JVM 进行垃圾回收 |
System.runFinalization() | 运行对象终结方法 |
示例代码:
System.gc();
System.runFinalization();
3. System类应用场景
- 日志和调试 -
System.out
和System.err
进行日志输出。 - 性能测试 -
System.nanoTime()
计算代码执行时间。 - 数组操作 -
System.arraycopy()
高效拷贝数组。 - 程序控制 -
System.exit()
终止程序。
示例:
// 计算代码执行时间
long start = System.nanoTime();
for (int i = 0; i < 1000000; i++);
long end = System.nanoTime();
System.out.println("执行时间: " + (end - start) + " 纳秒");