Java System类的常用方法(附带实例)

System 类对于大家来说其实并不陌生,向控制台打印信息的 System.out.println() 方法就是 System 类提供的。

System 类位于 java.lang 包中,没有构造方法,提供了大量的静态方法,可以获取与系统相关的信息以及系统级操作。本节将介绍该类的常用方法。

System currentTimeMillis()方法

currentTimeMillis() 方法的声明语句是:

static long currentTimeMillis();

该方法用于获取当前系统时间,返回的是毫秒值,表示系统当前时间距离标准基准时间(1970-01-01 00:00:00)的毫秒数。

例如:

public class TimeExample {

public static void main(String[] args) {

// 获取当前时间的毫秒值

long startTime = System.currentTimeMillis();

// 模拟一些操作,例如让程序暂停一段时间

try {

Thread.sleep(2000); // 让程序暂停2秒

} catch (InterruptedException e) {

e.printStackTrace();

}

// 再次获取当前时间的毫秒值

long endTime = System.currentTimeMillis();

// 计算经过的时间(毫秒)

long duration = endTime - startTime;

// 输出经过的时间

System.out.println("经过的时间(毫秒): " + duration);

}

}

运行结果为:

经过的时间(毫秒): 2001

System arraycopy()方法

arraycopy() 方法的声明语句是:

static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);

该方法可将数组中指定的数据复制到另一个数组中。其中,src 为源数据,srcPos 为源数据中的开始位置,dest 为目标数组,destPos 为目标数据中的开始位置,length 为要复制的数组元素的数量。

接下来,通过案例来演示 arraycopy() 方法的使用:

import java.util.Arrays;

public class Demo {

public static void main(String[] args) {

int[] src = new int[]{11, 22, 33, 44, 55, 66}; // 源数组

int[] dest = new int[]{111, 222, 333, 444}; // 目标数组

System.out.println("源数组:" + Arrays.toString(src));

System.out.println("目标数组复制前内容:" + Arrays.toString(dest));

System.arraycopy(src, 2, dest, 1, 2); // 调用 arraycopy() 方法

System.out.println("目标数组复制后内容:" + Arrays.toString(dest));

}

}

程序的运行结果如下:

源数组:[11, 22, 33, 44, 55, 66]

目标数组复制前内容:[111, 222, 333, 444]

目标数组复制后内容:[111, 33, 44, 444]

从结果可以看出,arraycopy() 方法从源数组复制数据并放到目标数组中,会覆盖目标数组中原来位置的内容,并不是插入。

System gc()方法

gc() 方法的声明语句是:

static void gc();

该方法用来建议 JVM 赶快启动垃圾回收器。只是建议启动,JVM 是否启动又是另外一回事。

接下来,通过案例来演示 gc() 方法的使用:

class Student {

String name;

public Student(String name) {

this.name = name;

}

@Override

protected void finalize() throws Throwable {

super.finalize();

System.out.println(name + "被回收了");

}

}

public class Demo {

public static void main(String[] args) {

for (int i = 1; i <= 8; i++) {

new Student("对象" + i);

System.gc();

}

}

}

程序的运行结果如下:

对象1被回收了

对象3被回收了

对象4被回收了

对象2被回收了

对象5被回收了

对象6被回收了

对象7被回收了

对象8被回收了

程序中通过循环语句多次调用 gc() 方法是因为它仅仅是建议回收,不一定能触发垃圾回收机制,因此多调用几次加大触发的概率。

注意,finalize() 方法是 Object 类的一个方法,此处 Student 类将其重写,这个方法会在垃圾回收时被调用。

System getProperty()方法

getProperty() 方法的声明语句是:

static String getProperty(String key);

该方法用于根据系统的属性名获取对应的属性值。接下来,通过案例来演示 getProperty() 方法的使用。

public class Demo {

public static void main(String[] args) {

String osName = System.getProperty("os.name");

System.out.println("操作系统的类型:" + osName);

String javaHome = System.getProperty("java.home");

System.out.println("JDK的根路径:" + javaHome);

String pathStr = System.getProperty("java.vm.version");

System.out.println("JVM虚拟机版本:" + pathStr);

}

}

程序的运行结果如下:

操作系统的类型:Windows 10

JDK的根路径:C:\Program Files\Java\jdk-15.0.2

JVM虚拟机版本:15.0.2+7-27

程序中 JDK 的路径和安装路径有关,如果安装路径更改则这个路径输出会与本文不一致。

这个案例只输出了 3 个属性值,实际有很多,大家可以根据需要更改属性名来获取不同的属性值。

System exit()方法

exit() 方法的声明语句是:

static void exit(int status);

该方法用于退出 JVM,参数为 0 表示正常退出,非 0 表示异常退出。退出 JVM 后,后面的代码将不再执行。无论参数传 0 还是传 1,JVM 都会退出。

Copyright © 2088 世界杯预选赛中国_1994年世界杯冠军是谁 - nywk120.com All Rights Reserved.
友情链接
Top