首页 > 编程笔记 > Java笔记 阅读:7

Java System类的用法(非常详细,附带实例)

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

程序中,先在计时开始时通过 nanoTime() 方法获取一个值,然后在计时结束时再通过 nanoTime() 方法获取一个值,两个值相减就是计时区间的时长了。程序实现的逻辑是获取三次计算从 1 加到 所耗费的时长,每次耗时在一千纳秒左右。

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标准输入”字符串并按下回车键后,屏幕就会输出这个字符串。

相关文章