《Java零基础教学》是一套深入浅出的 Java 编程入门教程。全套教程从Java基础语法开始,适合初学者快速入门,同时也从实例的角度进行了深入浅出的讲解,让初学者能够更好地理解Java编程思想和应用。
本教程内容包括数据类型与运算、流程控制、数组、函数、面向对象基础、字符串、集合、异常处理、IO 流及多线程等 Java 编程基础知识,并提供丰富的实例和练习,帮助读者巩固所学知识。本教程不仅适合初学者学习,也适合已经掌握一定 Java 基础的读者进行查漏补缺。
前言
大家好,我是不熬夜崽崽。作为一名 Java 后端研发,在日常编程中,想必大家都会时常需要对系统级操作进行控制与管理。无论是获取当前时间、终止程序执行,还是进行内存回收,System
类都为我们提供了极其便利的方法。它不仅能帮助我们高效地完成这些操作,还能让我们的程序更加稳定和高效。
本文将深入解析 System
类中五个常用的方法:currentTimeMillis()
、exit()
、nanoTime()
、gc()
和 getProperty()
。通过代码实例、应用场景的演示,以及优缺点分析,我们将全面了解这些方法如何帮助我们更好地开发 Java 程序。
摘要
System
类是 Java 提供的一个非常重要的类,它包含了一些与系统相关的工具方法。本文将介绍 System
类的五个核心方法,它们分别是:
currentTimeMillis()
:返回当前时间的毫秒值,用于时间相关的操作。exit()
:终止当前运行的 Java 虚拟机(JVM)。nanoTime()
:返回当前时间的纳秒值,用于精确的性能测量。gc()
:请求 Java 虚拟机进行垃圾回收。getProperty()
:获取系统属性,用于获取操作系统信息、Java 配置信息等。
通过实际的代码演示和应用场景分析,我们将探讨这些方法的具体使用和优势,同时也会分析它们的局限性。最后,我们将通过一个实际的测试用例,验证这些方法的功能和效果。
简介
众所周知,Java 它提供的 System
类,是一个非常重要的工具类,它并不是为面向对象的开发而设计的,而是专门为与系统操作相关的功能提供支持。通过 System
类,我们可以轻松地获取系统时间、系统属性,执行垃圾回收,甚至终止程序的执行。
以下是 System
类中的五个常用方法,它们在实际开发中有着广泛的应用:
currentTimeMillis()
:获取当前的系统时间(以毫秒为单位)。exit()
:停止当前的 Java 程序。nanoTime()
:返回高精度的时间值,用于性能测量。gc()
:请求 JVM 进行垃圾回收。getProperty()
:获取系统属性,如操作系统类型、用户环境变量等。
了解这些方法,能够帮助我们更加高效地进行系统级别的操作。
概述
System
类位于 java.lang
包下,所有的方法都是静态的,因此直接通过 System
类调用。我们经常会在需要与系统相关的操作时使用这些方法,尤其是在性能测试、内存管理、获取系统信息等场景中,System
类的作用尤为显著。
本文将逐一介绍 System
类中的五个核心方法,并展示它们的实际使用场景。通过对这些方法的掌握,我们可以在开发过程中提高工作效率,写出更加高效、稳健的代码。
核心源码解读
1. currentTimeMillis()
currentTimeMillis()
方法返回当前系统时间的毫秒值。它可以用来获取当前时间,也可以用于计算程序执行时间。
2. exit()
exit(int status)
方法终止当前运行的 Java 虚拟机。status
参数是一个整数,通常约定 0
表示正常退出,非 0
表示异常退出。
3. nanoTime()
nanoTime()
方法返回一个高精度的时间值,通常用于性能测试。它的返回值是相对于某个固定时间点(通常是 JVM 启动时间)的纳秒数,而不是绝对的当前时间。
4. gc()
gc()
方法请求 JVM 进行垃圾回收。尽管 JVM 会自动管理内存,垃圾回收机制可能不是立即执行的,gc()
方法可以请求 JVM 尽早进行回收。
5. getProperty()
getProperty(String key)
方法返回与给定键相关的系统属性。你可以用它来获取操作系统类型、Java 版本、用户目录等信息。
方法讲解与案例分析
1. currentTimeMillis()
currentTimeMillis()
返回自 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的毫秒数。它常用于记录程序的执行时间。
代码示例:
java
/**
* @Author wf
* @Date 2025-04-13 18:30
*/
public class SystemExample1 {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
// 模拟程序执行
try {
Thread.sleep(2000); // 睡眠 2 秒
} catch (InterruptedException e) {
e.printStackTrace();
}
long endTime = System.currentTimeMillis();
System.out.println("程序运行时间: " + (endTime - startTime) + " 毫秒");
}
}
输出:
json
程序运行时间: 2013 毫秒
结果运行展示:
根据如上案例,本地实际结果运行展示如下,仅供参考:

2. exit()
exit()
方法用于终止当前的 Java 程序。调用此方法时,程序将立即停止,并返回指定的退出状态码。
代码示例:
java
/**
* @Author wf
* @Date 2025-04-13 18:30
*/
public class SystemExample2 {
public static void main(String[] args) {
System.out.println("程序开始");
System.exit(0); // 退出程序
System.out.println("这行代码不会执行");
}
}
输出:
json
程序开始
程序在调用 exit(0)
后会立即停止,后面的代码不会执行。
结果运行展示:
根据如上案例,本地实际结果运行展示如下,仅供参考:

3. nanoTime()
nanoTime()
返回相对的高精度时间戳,通常用于测量程序执行的精度时间差。
代码示例:
java
package com.example.javase.wf.jinshiplan.demo202506.demo3;
/**
* @Author wf
* @Date 2025-04-13 18:30
*/
public class SystemExample3 {
public static void main(String[] args) {
long startTime = System.nanoTime();
// 模拟程序执行
try {
Thread.sleep(2000); // 睡眠 2 秒
} catch (InterruptedException e) {
e.printStackTrace();
}
long endTime = System.nanoTime();
System.out.println("程序运行时间: " + (endTime - startTime) + " 纳秒");
}
}
输出:
json
程序运行时间: 2007096300 纳秒
结果运行展示:
根据如上案例,本地实际结果运行展示如下,仅供参考:

4. gc()
gc()
请求 JVM 进行垃圾回收。虽然 JVM 通常会自动回收内存,但你可以通过 System.gc()
请求进行回收。
代码示例:
java
/**
* @Author wf
* @Date 2025-04-13 18:30
*/
public class SystemExample4 {
public static void main(String[] args) {
System.gc(); // 请求进行垃圾回收
System.out.println("垃圾回收请求已发送");
}
}
输出:
json
垃圾回收请求已发送
结果运行展示:
根据如上案例,本地实际结果运行展示如下,仅供参考:

5. getProperty()
getProperty()
可以获取系统的各种属性信息,常用来获取操作系统、Java 版本等信息。
代码示例:
java
package com.example.javase.wf.jinshiplan.demo202506.demo3;
/**
* @Author wf
* @Date 2025-04-13 18:30
*/
public class SystemExample5 {
public static void main(String[] args) {
String osName = System.getProperty("os.name");
String javaVersion = System.getProperty("java.version");
System.out.println("操作系统: " + osName);
System.out.println("Java 版本: " + javaVersion);
}
}
输出:
json
操作系统: Windows 10
Java 版本: 1.8.0_251
结果运行展示:
根据如上案例,本地实际结果运行展示如下,仅供参考:

应用场景演示
性能测试工具
在性能测试中,nanoTime()
常被用于精确的时间测量。我们可以通过它来计算程序某部分的执行时间,从而分析性能瓶颈。
程序退出管理
在某些场景下,我们可能需要手动终止程序的执行。例如,检测到某些致命错误时,我们可以调用 System.exit(1)
来立即停止程序的运行。
垃圾回收控制
尽管垃圾回收通常是自动进行的,但有时我们可能希望在某些关键时刻强制进行垃圾回收。通过 System.gc()
,我们可以请求 JVM 执行垃圾回收,释放内存。
优缺点分析
优点:
- 高效性 :
System
类中的方法通常执行非常高效,尤其是在需要系统级别的控制时。 - 易用性 :这些方法大多数是静态的,直接通过
System
类调用,代码简洁。 - 广泛应用:这些方法涉及时间管理、内存管理、系统属性获取等多种常见需求,在开发中非常实用。
缺点:
exit()
方法不适合所有场景 :exit()
会直接终止程序执行,在某些情况下可能导致资源未释放等问题,因此需要谨慎使用。- 垃圾回收的不可控性 :调用
System.gc()
并不能保证立即回收,它只是一个请求,JVM 可能会忽略它或推迟执行。
小结
通过本文的讲解,我们深入了解了 Java 中 System
类的五个常用方法。无论是在性能优化、内存管理还是系统信息获取方面,这些方法都为大家在日常开发中提供了极大的便利。掌握这些方法,能让你在平日工作中更加游刃有余。
总结
总而言之,System
类是 Java 编程中的一个基础且重要的工具类。通过它的常用方法,我们可以更精确地控制程序的运行,进行高效的性能测试,优化内存管理,甚至获取操作系统的详细信息。在开发中,我们不妨将这些方法运用到实际项目中,提升代码的质量与效率,最终能够帮助到大家巩固基础知识点,为后续的升职加薪做铺垫。
寄语
走上开发这条路,有许多工具和方法等待着我们去发现和掌握。希望你能通过这篇文章,对 Java System
类有更深的理解,逐渐成为一名更加高效、出色的开发者乃至架构师!加油!
最后,大家如果觉得看了本文有帮助的话,麻烦给不熬夜崽崽点个三连(点赞、收藏、关注)支持一下哈,大家的支持就是我写作的无限动力。