System类

 

System类

 

实际上System类是一些与系统相关属性和方法的集合,而且在System类中所有的属性都是静态的,要想引用这些属性和方法,直接使用System类调用即可。

 

常用方法

 

方法描述
static void exit ( int status ) 终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止
static void gc () 运行垃圾回收器。调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间
arraycopy(Object src, int srcPos, Object dest, int destPos,int length) 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。src - 源数组。srcPos - 源数组中的起始位置。dest - 目标数组。destPos - 目标数据中的起始位置。length - 要复制的数组元素的数量
static long currentTimeMillis() 返回以毫秒为单位的当前时间。(常用来计算一个程序执行时间)
 getProperties()  确定当前的系统属性
getProperties(String key) 获取系统某一属性。key - 系统属性的名称

 

 

package lesson2;

public class Demo09 {
public static void main(String[] args) {
//arraycopy 数组的复制
int [] arr = {20,18,15,8,35,26,45,90};
int [] dest = new int[8];
System.arraycopy(arr,4,dest,4,4);

for (int i=0;i<dest.length;i++){
System.out.println(dest[i]);
}

}
}

 

 

 

 

 

实验:

package lesson2;

public class Demo09 {
public static void main(String[] args) {
//1arraycopy 数组的复制
int [] arr = {20,18,15,8,35,26,45,90};
int [] dest = new int[8];
System.arraycopy(arr,4,dest,4,4);

for (int i=0;i<dest.length;i++){
System.out.println(dest[i]);
}

System.out.println(System.currentTimeMillis());

//2、获取毫秒数
long start = System.currentTimeMillis();
for (int i = 0; i < 99999999; i++) {
for (int j = 0; j < 99999999; j++) {
int result=i+j;
}
}
long end = System.currentTimeMillis();
System.out.println("用时:"+(end-start));

//3、回收垃圾
new Studnt("aaa", 19);
new Studnt("bbb", 19);
new Studnt("ccc", 19);
System.gc();//告诉垃圾回收器回收


//4、退出jvm
System.exit(0);

System.out.println("程序结束了");
//后面没有执行,说明已经退出了jvm
}
}



package lesson2;

public class Studnt {
private String name;
private int age;

public Studnt(String name, int age) {
this.name = name;
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

@Override
public String toString() {
return "Studnt{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}

@Override
protected void finalize() throws Throwable {
System.out.println("回收了"+name+""+" "+age);
}
}




 

 

 

总结:

1、在System类中的currentTimeMillis()方法,常用来计算一个程序执行的时间,非常实用。
2、通过System类中的getProperties()方法,看结果就知道有多厉害,不仅可以获取用户工作目录,还可以获取系统用户名(懂的都懂)。
3、关于gc()方法,不是掉用这个方法就一定会回收对象,具体还是由JVM说的算(要判断是否为垃圾对象,如果不是垃圾对象,即使调用,也不会回收的)

 

posted @ 2022-09-01 21:48  屯子里唯一的架构师  阅读(16)  评论(0编辑  收藏  举报