更新时间:2020-01-09 来源:黑马程序员 浏览量:
System类对大家来说并不陌生,因为之前在打印结果时,使用的都是“System.out.println()”语句,这句代码中就使用了System类。System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,想要引用这些属性和方法,直接使用System类调用即可。下面我们列举了System类的常用方法。
方法声明 | 功能描述 |
static void exit(int status) | 该方法用于终止当前正在运行的Java虚拟机,其中参加数 status表示状态码,如果状态码不是0,则表示异常终止 |
static long gc() | 运行垃圾回收器,并对垃圾进行回收 |
static long currentTimeMillis() | 返回以毫秒为单位的当前时间 |
static void arraycopy(Object src, int srcPos,Object dest,int destPos,int length) | 从src应用的指定源数组复制到dest引用的数组,复制从指定 的位置开始,到目标的指定位置结束 |
static Properties getProperties() | 取得当前的系统属性 |
static String getProperty(String key) | 获取指定键描述的系统属性 |
上面列出了System类的常用方法,接下来通过一些案例对表中的方法进行讲解。
1、getProperties()方法
Syste类的getProperties()方法用于获取当前系统的全部属性,该方法会返回一个Properties对象,其中封装了系统的所有属性,这些属性是以键值对的形式存在,接下来过一个案例来显示系统所有的属性。
import java.util.*;
public class system01 {
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);
}
}
}
运行结果:
上面案例实现了获取当前系统属性的功能。首先通过Syste的get Properties()方法获取封装了系统属性的Properties集合,然后对 Properties集合进行迭代,将所有系统属性的键以及对应的值打印出来。从图中可以看出,这些系统属性包括虚拟机版本号、用户国家、操作系统的架构等。
2. currentTimeMillis()
currentTimeMillis()方法返回一个1ong类型的值,该值表示当前时间与1970年1月1日0点0分0秒之间的时间差,单位是毫秒,习惯性地被称作时间戳。接下来通过个案例来计算程序在进行求和操作时所消耗的时间。
public class system02 {
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)+"毫秒");
}
}
运行结果:
上面案例中,演示了数字的求和操作,程序在求和开始和结束时,分别调用了current TimeMillis()方法获得了两个时间戳,两个时间戳之间的差值便是求和操作耗费的时间。
3. arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
arraycopy()方法用于将一个数组中的元素快速拷贝到另一个数组。其中的参数具体作用如下:
src:表示源数组。
dest:表示目标数组。
srcPos:表示源数组中拷贝元素的起始位置。
desPos:表示拷贝到目标数组的起始位置。
length:表示拷贝元素的个数。
需要注意的是,在进行数组复制时,目标数组必须有足够的空间来存放拷贝的元素,否则会发生角标越界异常。接下来通过一个案例来演示数组元素的拷贝。
public class system03 {
public static void main(String[] args){
int[] fromArray={101,102,103,104,105,106}; //源数组
int[] toArray={201,202,203,204,205,206,207}; //目标数组
System.arraycopy(fromArray,2,toArray,3,4); //拷贝数组元素
//打印目标数组中的元素
for(int i=0;i<toArray.length;i++){
System.out.println(i+":"+toArray[i]);
}
}
}
运行结果如下:
上面案例中,创建了两个数组 fromArray和 toArray,分别代表源数组和目标数组,当调用 arraycopy()方法进行元素拷贝时,由于指定了从源数组中索引为2的元素开始拷贝,并且拷贝4个元素存放在目标数组中索引为3的位置,因此,在打印目标数组的元素时,程序首先打印的是数组toArray的前3个元素201、202、203,然后打印的是从fromArray中拷贝的4个元素。
除了以上例程涉及到的方法,System类还有两个常见的方法,分别是gc()和ext(int staus)方法。其中gc()方法用来启动Java的垃圾回收器,并且对内存中的垃圾对象进行回收。exit(int staus)方法用来终止当前正在运行的Java虚拟机,其中的参数status用于表示当前发生的异常状态,通常指定为0,表示正常退出,否则表示异常终止。
猜你喜欢: