java.lang.System 类是 Java 中用于处理系统级操作的工具类,它封装了一系列与系统交互的静态方法,涵盖虚拟机控制、时间获取、数组拷贝等核心功能。本文结合实例,解析 System 类的常用方法及应用场景。

一、System 类的基础特性

1. 工具类的定位

System 类被设计为系统级工具类,其特点包括:

构造方法私有(private),无法创建实例,所有方法均为静态方法(static)直接通过 System.方法名() 调用,无需实例化核心作用:提供与底层系统交互的接口,简化系统级操作

二、核心方法解析

1. exit(int status):终止虚拟机运行

功能:强制终止当前 Java 虚拟机(JVM),status 为退出状态码(0 表示正常退出,非 0 表示异常退出)。特点:调用后虚拟机立即停止,后续代码不再执行。

// System.exit(0); // 取消注释后,后续"我执行了吗?"不会输出

System.out.println("我执行了吗?");

2. currentTimeMillis():获取系统时间毫秒数

功能:返回从「1970 年 1 月 1 日 0 时 0 分 0 秒」(计算机时间原点)到当前时刻的毫秒数,常用于计时或生成时间戳。应用场景:计算代码执行耗时、生成唯一 ID 等。

long time = System.currentTimeMillis();

System.out.println(time); // 输出:1754965367635(示例值)

示例:计算循环执行时间

long start = System.currentTimeMillis();

for (int i = 0; i < 1000000; i++) {

// 执行耗时操作

}

long end = System.currentTimeMillis();

System.out.println("耗时:" + (end - start) + "毫秒");

3. arraycopy():高效数组拷贝

功能:将一个数组的指定范围元素拷贝到另一个数组,是 Java 中性能最优的数组拷贝方法之一。

方法签名:

public static void arraycopy(

Object src, // 源数组

int srcPos, // 源数组起始拷贝索引

Object dest, // 目标数组

int destPos, // 目标数组起始存放索引

int length // 拷贝元素个数

)

使用示例:

int[] arr1 = {1, 2, 3, 4, 5};

int[] arr2 = new int[arr1.length];

// 将 arr1 从索引0开始的5个元素,拷贝到 arr2 索引0位置

System.arraycopy(arr1, 0, arr2, 0, arr1.length);

System.out.println(Arrays.toString(arr2)); // 输出:[1, 2, 3, 4, 5]

注意事项:

基本数据类型数组拷贝时,源数组与目标数组类型必须一致(如 int[] 不能拷贝到 long[])。引用数据类型数组拷贝时,支持子类类型数组拷贝到父类类型数组(如 String[] 拷贝到 Object[])。起始索引和拷贝个数不能超出数组长度,否则会抛出 ArrayIndexOutOfBoundsException。

三、System 类与 Runtime 类的区别

方法功能System 类Runtime 类终止虚拟机System.exit(int status)Runtime.exit(int status)获取系统时间currentTimeMillis() (静态方法)无直接对应方法数组拷贝arraycopy() (静态方法)无此功能执行系统命令无此功能exec(String command) (实例方法)内存 / CPU 信息无直接对应方法maxMemory()、availableProcessors() 等

四、总结

System 类是 Java 中处理系统级操作的核心工具,其核心价值在于:

便捷的系统控制:通过 exit() 快速终止虚拟机,简化程序退出逻辑。高效的时间管理:currentTimeMillis() 提供精准的时间戳,满足计时、日志等场景需求。高性能数组操作:arraycopy() 底层由 native 方法实现,拷贝效率远高于手动循环拷贝。

在实际开发中,System 类的方法频繁用于日常编程(如数组处理、性能测试),掌握其用法能显著提升代码效率和简洁性,是 Java 开发者必备的基础工具类知识。