全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-08 7 分钟 ✍️ juanwangdev

System类

System是Java核心系统类,提供系统级功能和标准IO流。

概述

所在包

java.lang.System

核心特点

  • final类,不能继承
  • 静态方法和属性,无需创建对象
  • 自动导入,无需import

标准IO流

out标准输出流

Java
System.out.println("Hello");        // 输出+换行
System.out.print("Hello");          // 输出不换行
System.out.printf("%d + %d = %d", 1, 2, 3);  // 格式化输出

in标准输入流

Java
// 传统方式
InputStream is = System.in;
int ch = is.read();  // 读取一个字节

// Scanner包装
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();  // 读取一行
int num = scanner.nextInt();       // 读取整数

err标准错误流

Java
System.err.println("Error message");  // 错误输出(红色显示)

err用于输出错误信息,与out分离便于日志处理。

时间获取

currentTimeMillis毫秒时间戳

Java
long timestamp = System.currentTimeMillis();
// 返回1970-01-01 00:00:00 UTC到现在的毫秒数

// 计算程序耗时
long start = System.currentTimeMillis();
// ... 执行代码
long end = System.currentTimeMillis();
long elapsed = end - start;  // 耗时毫秒数

nanoTime纳秒时间

Java
long start = System.nanoTime();
// ... 执行代码
long elapsed = System.nanoTime() - start;
// 用于精确计时,不适合获取实际时间

currentTimeMillis获取实际时间戳,nanoTime用于精确计时。

系统属性

getProperty获取属性

Java
// Java版本
String version = System.getProperty("java.version");

// 用户目录
String userDir = System.getProperty("user.dir");

// 用户主目录
String home = System.getProperty("user.home");

// 操作系统名称
String osName = System.getProperty("os.name");

// 文件分隔符
String separator = System.getProperty("file.separator");

常用系统属性

属性键说明
java.versionJava版本
java.homeJava安装目录
os.name操作系统名称
os.version操作系统版本
user.name用户名
user.home用户主目录
user.dir当前工作目录
file.separator文件分隔符(/或\)
line.separator行分隔符(\n或\r\n)

setProperty设置属性

Java
System.setProperty("my.prop", "value");
String value = System.getProperty("my.prop");  // "value"

getProperties获取所有属性

Java
Properties props = System.getProperties();
props.list(System.out);  // 打印所有属性

环境变量

getenv获取环境变量

Java
String path = System.getenv("PATH");       // PATH环境变量
String javaHome = System.getenv("JAVA_HOME"); // JAVA_HOME

数组复制

arraycopy高效复制数组

Java
int[] src = {1, 2, 3, 4, 5};
int[] dest = new int[5];

// 复制src[0-2]到dest[0]
System.arraycopy(src, 0, dest, 0, 3);
// dest = [1, 2, 3, 0, 0]

// 参数:源数组、源起始位置、目标数组、目标起始位置、复制长度

arraycopy是native方法,效率高于循环复制。

程序控制

exit退出程序

Java
System.exit(0);   // 正常退出
System.exit(1);   // 异常退出(非0表示异常)

exit立即终止程序,finally块不执行(特殊情况)。

identityHashCode原始hashCode

Java
String s1 = new String("Hello");
String s2 = new String("Hello");

s1.hashCode();               // 相同(内容hashCode)
s2.hashCode();               // 相同

System.identityHashCode(s1); // 不同(对象原始hashCode)
System.identityHashCode(s2); // 不同

垃圾回收

gc建议垃圾回收

Java
System.gc();  // 建议JVM执行垃圾回收(不保证立即执行)

gc只是建议,JVM自行决定何时回收,不建议频繁调用。

要点总结

  • System是java.lang包的核心系统类
  • out/in/err标准输入输出流
  • currentTimeMillis获取毫秒时间戳
  • nanoTime获取纳秒用于计时
  • getProperty获取系统属性
  • getenv获取环境变量
  • arraycopy高效复制数组
  • exit(0)正常退出程序
  • identityHashCode获取对象原始hashCode
  • gc建议垃圾回收(不保证执行)

📝 发现内容有误?点击此处直接编辑

← 上一篇 StringUtils
下一篇 → break和continue
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库