System类

  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类中的一个方法,用于对象回收前进行调用。

原文地址:https://www.cnblogs.com/Tony98/p/10495865.html