1.System类
System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的。因此,可以直接使用System类调用其属性和方法。
System类的常用方法:
方法声明 | 功能描述 |
---|---|
static void exit(int status) | 该方法用于终止当前正在运行的Java虚拟机,其中参数status表示状态码,若状态码非0,则表示异常终止。 |
static long gc() | 运行垃圾回收器,并对垃圾进行回收 |
static long currentTimeMills() | 返回以毫秒为单位的当前时间 |
satic void arraycopy(Object src,int srcPos,Object dest,int destPos,int length) | 从src引用的指定源数组复制到dest引用的数组,复制从指定的位置开始,到目标数组的指定位置结束 |
static Properties getProperties() | 取得当前的属性值 |
static String getProperty(String key) | 获取指定键描述的系统属性 |
下面通过一些案例对表中的方法进行讲解:
- getProperties()方法
System类的getProperrties()方法y用于获取当前系统的全部属性,该方法会返回一个Properties对象,其中封装了系统的所有属性,这些属性以键值对的形式存在。
Example1:
import java.util.*;
public class Example1 {
public static void main(String[] args) {
//获取当前系统属性
Properties properties = System.getProperties();
//获取所有系统属性的key,返回Enumeration对象
Enumeration propertyNames = properties.propertyNames();
while(propertyNames.hasMoreElements()) {
//获取系统属性的键key
String key = (String) propertyNames.nextElement();
//获取当前键key对应的值value
String value = System.getProperty(key);
System.out.println(key+"--->"+value);
}
}
运行结果:
2.currentTimeMilllis()
currentTimeMilllis()方法返回一个long类型的值,该值表示当前时间与1970年1月1日0分0秒之间的时间差,单位是毫秒,习惯性的被称为时间戳;
Example2:
public class Example2 {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
int sum = 0;
for(int i=0;i<100000000;i++) {
sum+=i;
}
long endTime = System.currentTimeMillis();
System.out.println("程序运行的时间为:"+(endTime-startTime)+"毫秒");
}
}
运行结果:
3.arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
arraycopy()方法用于将一个数组中的元素快速拷贝到另一个数组。其中的参数具体作用如下:
- src:表示源数组。
- dest:表示目标数组。
- srcPos:表示源数组中拷贝元素的起始位置。
- destPos:表示拷贝到目标数组的起始位置。
- length:表示拷贝元素的个数。
需要注意的是,在进行数组复制时,目标数组必须有足够的空间来存放拷贝的元素,否则会发生角标越界异常。
Example3:
public class Example3 {
public static void main(String[] args) {
int[] formArray = {101,102,103,104,105,106};
int[] toArray = {201,202,203,204,205,206,207};
System.arraycopy(formArray, 2, toArray, 3, 4);
for(int i=0;i<toArray.length;i++) {
System.out.println(i+":"+toArray[i]);
}
}
}
运行结果:
System类还有两个常用方法,分别是gc()和exit(int status)方法。其中gc()方法用来启动Java的垃圾回收器,并且对内存中的垃圾对象进行回收。exit(int status)方法来终止当前正在运行的Java虚拟机,其中的参数status用于表示当前发生的异常状态,通常指定为0,表示正常退出,否则表示异常终止;
2.Runtime类
Runtime类用于表示虚拟机运行时的状态,它用于封装JVM虚拟机进程。每次使用Java命令启动虚拟机都对应一个Runtime实例 ,并且只有一个实例,因此该类采用单例模式进行设计,对象不可以直接实例化;
若想在程序中获得一个Runtime实例,只能通过下面的方式:
Runtime run = Runtime.getRuntime();
Example4:
public class Example4{
public static void main(String[] args) {
Runtime rt = Runtime.getRuntime();
System.out.println("处理器的个数:"+rt.availableProcessors()+"个");
System.out.println("空闲内存数量:"+rt.freeMemory()/1024/1024+"M");
System.out.println("最大可用内存数量:"+rt.maxMemory()/1024/1024+"M");
}
}
运行结果:
在例Example4中,通过Runtime.getRuntime()方式创建了一个Runtime的实例对象,并分别调用该对象的availableProcessors()方法,freeMemory()方法和maxMemory()方法。需要注意的是,由于每个人的机器配置不同,该例的打印结果可能不同。
Runtime类中提供了一个exec()方法,该方法用于执行一个dos命令,从而实现和在命令行窗口中输入dos命令同样的效果。例如,通过运行“notepad.exe”命令打开Windows自带的记事本程序.
Example5:
import java.io.*;
public class Example5{
public static void main(String[] args) throws IOException{
Runtime rt = Runtime.getRuntime();
rt.exec("notepad.exe");
}
}