本章目标
认识System类及一些常用方法
掌握垃圾对象的回收操作
了解对象的生命周期
System类
System类是一些与系统相关的属性和方法的集合,而且在System类中所有的属性都是静态的,要想引用这些属性和方法,直接使用System类调用即可。
System类应用:计算一个程序的执行时间
public class SystemDemo01 {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();//取得开始计算之前的时间
int sum = 0;//声明变量存放累加后的结果
for(int i=0; i<3000000; i++){//执行累加操作
sum+=i;
}
long endTime = System.currentTimeMillis();
//结束时间减去开始时间
System.out.println("计算所花费的时间:"+(endTime - startTime)+"毫秒。");
}
/* 结果:
* 计算所花费的时间:1毫秒。
* */
}
System应用:取得本机的全部环境属性
public class SystemDemo02 {
public static void main(String[] args) {
System.getProperties().list(System.out);//列出系统的全部属性
}
/* 结果:
* -- listing properties --
* 以下是本机的全部环境属性
* */
}
System类应用:列出指定属性
public class SystemDemo03 {
public static void main(String[] args) {
System.out.println("系统版本为:"+System.getProperty("os.name")+
System.getProperty("os.version")+
System.getProperty("os.arch"));//获取当前系统版本
System.out.println("系统用户为:"+System.getProperty("user.name"));
System.out.println("当前用户目录:"+System.getProperty("user.home"));
System.out.println("当前用户工作目录:"+System.getProperty("user.dir"));
}
/* 结果:
* -- listing properties --
* 系统版本为:Windows Vista6.1amd64
* 系统用户为:Administrator
* 当前用户目录:C:\Users\Administrator
* 当前用户工作目录:H:\Eleven
* */
}
垃圾收集
System类也有gc()方法,此方法就是调用了Runtime类中的gc()方法。
子类覆写Object类中的finallize()方法就可以实现对象回收前的收尾操作。
class Person{
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString(){
return "姓名:"+this.name+",年龄:"+this.age;
}
public void finalize() throws Throwable{//对象释放空间时默认调用此方法
System.out.println("对象被释放 --> "+this);//直接打印对象调用 toString
}
}
public class SystemDemo04 {
public static void main(String[] args) {
Person per = new Person("张三", 30);
per = null;//断开引用,释放空间
System.gc();//强制性释放空间
}
/* 结果:
* 对象被释放 --> 姓名:张三,年龄:30
* */
}
对象生命周期