System类
我们经常使用的输出语句:System.out.println();就使用了System类。
System类定义了一些与系统相关的属性和方法,他们都是静态的。所以如果想引用这些方法,直接调用System类即可。
System类的方法有一些并不常用,我们研究几个比较重要的;
getProperties()方法
System的getProperties()方法用于获取当前系统的全部属性。该方法会返回一个Properties对象,其中封装了系统的所有属性,并且他们是以键值对的形式存在的。
CurrentTimeMillis()方法
currentTimeMillis()方法返回一个long类型的值,该值表示当前时间和1970年1月1日0点0分0秒的时间差,单位是毫秒,也称为时间戳。
arraycopy()方法
arraycopy的作用是将一个数组的元素拷贝到另一个数组
System.arraycopy(srcArray,2,destArray,0,4);
表示将srcArray数组的第二个元素开始拷贝到destArray的第0个元素开始。拷贝四个元素。
注意:使用arraycopy()方法拷贝数组时必须数组元素的类型一致。否则报错。
使用arraycopy()方法拷贝数组时,拷贝元素的个数不能大于原数组拷贝的个数也不能大于现数组空闲的个数。否则报错。
System的gc()方法是用来回收内存中的垃圾对象(指定义了却不使用)
System的exit(int index)方法用来终止正在运行的java虚拟机,其中的参数status如果为0,则是正常退出,否则异常终止。
Runtime类
每次使用Java命令启动Java虚拟机时都会生成一个Runtime实例,并且只有一个实例。应用程序不能创建自己的实例对象,但是可以通过getRuntime()方法来获取Runtime对象
Runtime run = Runtime.getRuntime();
由于Runtime类封装了Java的虚拟机进程,因此可以通过该类的实例对象来获取当前的虚拟机相关信息。
public class Example{
public static void main(String[]args ){
Runtime t = Runtime.getRuntime();
SyStem.out.println("处理器个数:"+t.availableProcessors()+"个");
System.out.println("空间内存大小:"+t.freeMemory()/1024/1024+"个");
System.out.println("最大可用内存大小:"+t.maxMemory()/1024/1024+"M");
}
}
可见,我们在使用Runtime类的方法时,需要先创建实例化对象,在对对象调用方法。
同时,Runtime类提供了一个exec()方法,用于执行一个DOS命令,从而实现和在命令行窗口输入DOS命令同样的效果。
import java.io.IOException;
public class Example{
public static void main(String[]args){
Runtime rt = Runtime.getRuntime();
rt.exec("notepad.exe");
}
}
上述代码中我们创建了一个Runtime类的实例对象,使用exec()方法打开了一个记事本,Runtime的exec()方法会返回一个process对象,我们可以在任务管理器上查到该记事本的进程,我们通常使用destroy()方法来结束该进程
public class Example{
public static void main(String[]args){
Runtime rt = Runtime.getRuntime();
Process p = rt.exec("notepad.exe");
Thread.sleep(1000);//休眠1秒
p.destroy();//结束进程
}
}