Java中的常用类:System 类
System 类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,引用这些属性和方法,直接使用 System 类调用。
System 类的常用方法
static void gc() 启动运行垃圾回收器,并对垃圾进行回收
static Properties getProperties() 获取当前的系统属性
static String getProperty(String Key) 获取指定键描述的系统属性
static native long currentTimeMillis() 获取以毫秒为单位的当前时间
----------------------------------------------------------------------------------
static void exit(int status)
终止当前正在运行的Java虚拟机,其中参数status表示状态码,若状态码非0,则表示异常终止
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
从src引用的指定源数组拷贝到dest引用的数组,拷贝从指定的位置开始,到目标数组的指定位置结束
- getProperties() 方法
System 类的 getProperties() 方法用于获取当前系统的全部属性,该方法会返回一个 Properties 对象,其中封装了系统的所有属性,这些属性是以键值对的形式存在。
package com.wang.demo;
import java.util.Properties;
import java.util.Set;
public class SystemDemo1 {
public static void main(String[] args) {
//获取当前系统属性
Properties properties = System.getProperties();
System.out.println(properties);
//获取所有系统属性的 key(属性名),返回 Set 对象
Set<String> propertyNames = properties.stringPropertyNames();
for (String key : propertyNames) {
//获取当前键 key(属性名)所对应的值(属性值)
String values = System.getProperty(key);
System.out.println(key + "---" + values);
}
}
}
运行结果:
- currentTimeMillis() 方法
currentTimeMillis() 方法返回一个 long 类型的值,该值表示当前时间与 1970年1月1日0点0分0秒 之间的时间差,单位是毫秒,通常也称该值为 时间戳 。
计算程序在进行求和操作时所消耗的时间
package com.wang.demo;
public class SystemDemo2 {
public static void main(String[] args) {
//循环开始时的当前时间
long staticTime = System.currentTimeMillis();
int sum = 0;
for (int i = 0; i < 100000000; i++) {
sum += i;
}
//循环结束后的当前时间
long endTime = System.currentTimeMillis();
System.out.println("程序运行时间为:" + (endTime - staticTime) + "毫秒");
}
}
-------------------------------------------------------------------------------------
运行结果:程序运行时间为:31毫秒
程序在求和开始和结束时,分别调用了 currentTimeMillis()方法,获得两个时间戳,两个时间戳之间的差是求和操作耗费的时间,由于处理器性能等原因,程序运行的时间也会有所不同。
- arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
arraycopy()方法用于将一个数组中的元素快速拷贝到另一个数组,参数说明如下:
1.src:表示源数组
2.dest:表示目标数组
3.srcPos:表示源数组中拷贝元素的起始位置
4.destPos:表示拷贝到目标数组的起始位置
5.length:表示拷贝元素的个数
注意:在进行数组拷贝时,目标数组必须有足够的空间来存放拷贝的元素,否则会发生角标越界异常
package com.wang.demo;
public class SystemDemo3 {
public static void main(String[] args) {
//源数组
int[] srcArray = {101, 102, 103, 104, 105, 106};
//目标数组
int[] destArray = {201, 202, 203, 204, 205};
//拷贝数组元素
System.arraycopy(srcArray, 2, destArray, 0, 4);
//打印目标数组中的元素
for (int i = 0; i < destArray.length; i++) {
System.out.println(i + ":" + destArray[i]);
}
}
}
---------------------------------------------------------------------------
结果:0:103
1:104
2:105
3:106
4:205
创建了两个数组 srcArray 和 destArray,分别代表源数组和目标数组,当调用 arraycopy() 方法进行元素拷贝时,由于指定了从源数组中索引为 2 的元素开始拷贝,并且拷贝 4 个元素存放在目标数组中索引为 0 的位置,因此,在打印目标数组的元素时,程序首先打印输出的是从源数组 srcArray 中拷贝的后 4 个元素,然后打印输出的 destArray 中的最后一个元素。
使用 arraycopy() 方法进行数组元素拷贝时,一定要源数组元素类型和目标数组元素类型一致,不然会出现 ArrayStoreException 异常。使用 arraycopy() 方法时,最后一个拷贝的元素长度参数 length 不能超过截取的源数组从指定位置 srcPos 开始剩余元素个数,也不能超过目标数组从指定位置 destPos 开始可容纳的元素个数,不然会出现数组下标越界异常。
上一篇: Mixly 数码管时钟实验
下一篇: Mixly 数码管时钟实验