Java System类的常用方法(附带实例)
System 类对于大家来说其实并不陌生,向控制台打印信息的 System.out.println() 方法就是 System 类提供的。
System 类位于 java.lang 包中,没有构造方法,提供了大量的静态方法,可以获取与系统相关的信息以及系统级操作。本节将介绍该类的常用方法。
例如:
接下来,通过案例来演示 arraycopy() 方法的使用:
接下来,通过案例来演示 gc() 方法的使用:
这个案例只输出了 3 个属性值,实际有很多,大家可以根据需要更改属性名来获取不同的属性值。
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]
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被回收了
注意,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 都会退出。