System 类
11.4.1 认识 System 类
【例11.18】计算一个程序的执行时间
package jiaqi;
public class demo328_1 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
long start = System.currentTimeMillis();
int sum = 0;
for(int i=0;i<30000000;i++)
{
sum+=i;
}
long end = System.currentTimeMillis();
System.out.println(end-start+"ms");
}
}
【例11.19]取得本机的全部环境属性
package jiaqi;
public class demo329_1 {
public static void main(String[] args)
{
System.getProperties().list(System.out);
}
}
【例11.20】列出指定属性
package jiaqi;
public class demo329_2
{
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.home"));
System.out.println(System.getProperty("user.name"));
System.out.println(System.getProperty("user.dir"));
}
}
11.4.2垃圾对象的回收
但是,==如果在一个对象被回收之前要进行某些操作,==那么该怎么办呢?实际上,在Object类中有一个finalize()方法,此方法定义如下:
protected void finalize() throws Throwable
一个子类只需要覆写此方法就可以在释放对象之前进行某些操作。
【例11.21】观察对象释放
System.gc();时会调用finalize()
package jiaqi;
class Person
{
private String name =null;
private int age =0 ;
public Person(String name,int age)
{
this.name = name;
this.age = age;
}
public String toString()
{
return "name:" + this.name + " \t" + "age:" + this.age ;
}
@Override
public void finalize() throws Throwable
{
System.out.println("释放空间时自动调用finalize()");
}
}
public class demo330_1
{
public static void main(String[] args)
{
Person per = new Person("duyanhe",10);
per = null;
System.gc();
}
}