Java System类的用法(非常详细,附带实例)
我们不能对 System 类进行实例化,它的所有方法都是静态的,要使用它的方法,只需通过该类直接调用。
Java System获取系统当前时间
我们可以通过 System 类提供的 currentTimeMillis() 静态方法来获取系统的当前时间,注意它返回的是当前时间点到 1年 1 月 1 日之间的时长,单位是毫秒(ms),我们也将该值称为时间戳。jshell> System.currentTimeMillis(); $1 ==> 1745306946651上面是获取当前时间的例子,结果为 1745306946651,将该值转换为日期就是“2025-04-22 2025-04-22 15:29:06”。
System 类还为我们提供了纳秒级的计时器,主要通过 nanoTime() 方法类实现,通常我们会将在计时区间使用两个 nanoTime() 方法获取的值相减来得到计时结果。
public class SystemTest { public static void main(String args[]) { for (int i = 0; i < 3; i++) { long start = System.nanoTime(); //计时开始 int count = 0; for (int j = 1; j <= 1j++) count += j; //计时结束 long end = System.nanoTime(); System.out.println("第" + i + "次耗时:" + (end - start)); } } }输出结果为:
第0次耗时:1100
第1次耗时:900
第2次耗时:900
Java System获取系统属性
如果要获取系统相关的属性,也可以通过 System 类来获取,这些属性既包括 Java 的版本、厂商、安装路径等属性,也包括操作系统层面的相关属性。例如:
public class SystemTest { public static void main(String args[]) { System.out.println("Java版本:" + System.getProperty("java.version")); System.out.println("Java厂商:" + System.getProperty("java.vendor")); System.out.println("Java厂商网址:" + System.getProperty("java.vendor.url")); System.out.println("Java安装目录:" + System.getProperty("java.home")); System.out.println("Java规范版本:" + System.getProperty("java.specification. version")); System.out.println("Java规范厂商:" + System.getProperty("java.specification. vendor")); System.out.println("Java规范名称:" + System.getProperty("java.specification. name")); System.out.println("Java类版本号:" + System.getProperty("java.class.version")); System.out.println("Java类路径:" + System.getProperty("java.class.path")); System.out.println("Java库路径:" + System.getProperty("java.library.path")); System.out.println("Java临时路径:" + System.getProperty("java.io.tmpdir")); System.out.println("操作系统名称:" + System.getProperty("os.name")); System.out.println("操作系统的架构:" + System.getProperty("os.arch")); System.out.println("操作系统版本号:" + System.getProperty("os.version")); System.out.println("文件分隔符:" + System.getProperty("file.separator")); System.out.println("操作系统用户名:" + System.getProperty("user.name")); System.out.println("操作系统用户主目录:" + System.getProperty("user.home")); System.out.println("当前工作目录:" + System.getProperty("user.dir")); } }输出结果为:
Java版本:11.0.2
Java厂商:Oracle Corporation
Java厂商网址:http://java.oracle.com/
Java安装目录:C:\Program Files\Java\jdk-11.0.2
Java规范版本:11
Java规范厂商:Oracle Corporation
Java规范名称:Java Platform API Specification
Java类版本号:55.0
Java类路径:D:\workspace\java_book_code\bin
Java库路径:C:\Program Files\Java\jdk-11.0.2\bin;
Java临时路径:C:\Users\seaboat\AppData\Local\Temp\
操作系统名称:Windows 10
操作系统的架构:amd64
操作系统版本号:10.0
文件分隔符:\
操作系统用户名:seaboat
操作系统用户主目录:C:\Users\seaboat
当前工作目录:D:\workspace\java_book_code
Java System获取操作系统的环境变量
通过 System 类的 getenv() 方法能获取操作系统的环境变量。安装 Java 时大家就已经学过了如何配置系统变量,如果我们要添加一个环境变量,可以按照下图的步骤去添加:

图 1 新建系统环境变量
这里我们添加了一个 test 变量及其对应的变量值,然后就可以通过 System.getenv("test") 来获取对应的变量值,代码如下所示:
jshell> System.getenv("test"); $1 ==> "java test"
Java System退出虚拟机
System 类还提供了 exit() 方法用于退出 Java 虚拟机,这是一个风险较高的方法,因为执行它后将导致程序结束,而不管现在运行状态如何。下面实例在输出了“准备停止...”后就退出 Java 虚拟机,后面的“到达不了”不会输出。
public class SystemTest { public static void main(String args[]) { System.out.println("准备停止..."); System.exit(1); System.out.println("到达不了"); } }
Java System获取标准输出输入对象
在编写 Java 代码时我们经常会将某些结果输出以查看是否正确,这时就会用“System.out.println()”方法,这也是我们最经常用的一行代码。其中“System.out”对应的就是标准输出对象,而所谓标准输出对象通常是指计算机所连接的显示器,所以我们能够向显示器屏幕输出文本。此外,“System.err”也是标准输出对象,它与“System.out”基本相同,前者用于输出错误信息而后者用于输出普通信息。
下面的实例代码展示了标准输出对象的使用:
public class SystemTest { public static void main(String args[]) { System.out.println("标准输出-普通信息打印"); System.err.println("标准输出-错误信息打印"); } }输出结果如下图所示:

图 2 输出结果
对应于标准输出对象,System 类还提供了获取标准输入对象的途径,具体通过“System.in”来获取。标准输入对象通常是指计算机所连接的键盘,一般情况下我们就是通过键盘(输入)与显示器(输出)来进行交互的。
下面实例展示了从键盘获取输入字符的功能:
public class SystemTest { public static void main(String args[]) throws IOException { InputStream is = System.in; Reader r = new InputStreamReader(is); char[] chs = new char[1024]; int len = 0; while ((len = r.read(chs)) != -1) { char[] cc = new char[len]; for (int i = 0; i < len; i++) cc[i] = chs[i]; String str = new String(cc); System.out.println("键盘输入的字符串为:" + str); } is.close(); } }输入输出如下图所示:

图 3 输入输出
“System.in”其实是一个输入流,封装成一个 Reader 对象就可以进行读取操作了。chs 变量是一个长度为 1024 的数组,用于存放从键盘读取的字符串,也就是说每次最多只能读取长度为 1024 的字符串。
程序运行后会保持监听键盘的输入,当我们输入“java标准输入”字符串并按下回车键后,屏幕就会输出这个字符串。