System类是一直使用的类,一直用它进行信息的打印,之前学习过的数组拷贝就属于System类中的方法定义为:public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
在这个类中提供一个取得当前日期时间数的方法:public static long currentTimeMillis(),通过此方法可以取得某一个操作所花费的时间。
范例:观察这个方法的使用
1 package cn.Tony.demo; 2 3 public class TestDemo { 4 public static void main(String[] args) throws Exception { 5 long start=System.currentTimeMillis(); 6 String str=""; 7 for(int x=0;x<5000;x++){ 8 str+=x; 9 } 10 long end=System.currentTimeMillis(); 11 System.out.println("花费时间:"+(end-start)); 12 } 13 }
但是在这个System类有一个方法:public static void gc() 也提供一个垃圾收集方法,这个方法不是新的实现,而是调用了Runtime类中的gc()操作
在之前一直强调过一个概念:一个类对象的创建的一定要使用构造方法,那么一个对象如果不使用了,就应该就会被释放,如果释放的时候应该也有一个方法支持才对,所以此时如果要想做收尾的操作,可以让一个类去覆写Object类中的finalize()方法:protected void finalize() throws Throwable
无论在finalize()方法里面是否会出现异常或者是错误,结构不会改变,并且也不会导致程序出错。
范例:观察finalize()方法使用
1 package cn.Tony.demo; 2 3 class Person{ 4 public Person(){ 5 System.out.println("waawa,出来了"); 6 } 7 @Override 8 protected void finalize() throws Throwable { 9 System.out.println("下辈子..."); 10 throw new Exception("我还要再活500年");//不想下去 11 } 12 } 13 public class TestDemo { 14 public static void main(String[] args) throws Exception { 15 Person per=new Person(); 16 per=null;//没了 17 System.gc(); 18 System.out.println("不为人了"); 19 } 20 }
面试题:请解释final finally finalize的区别
final是一个关键字,用于定义不能够被继承的父类,不能够被覆写的方法和常量,
finally是异常处理统一出口。
finalize:是Object类中的一个方法,用于对象回收前进行调用。