finally
修饰符(关键字)在Java中,final关键字可以用来修饰类、方法和变量。
- 修饰类当用final修饰一个类时,表明这个类不能被继承。
- 修饰方法当用final修饰一个方法时,该方法是不能被子类所覆盖的。
- 修饰变量当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化;
如果final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。
finally(异常处理)
finally关键字一般用于异常处理中。**finally结构使代码总会执行,不关有无异常发生。**finally在try,catch中可以有,可以没有。如果trycatch中有finally则必须执行finally块中的操作。一般情况下,用于关闭文件的读写操作,或者是关闭数据库的连接等等。
finalize(垃圾回收)
finalize方法是Object提供的的实例方法,通过调用finalize()方法在垃圾收集器将对象从内存中清理出去之前做必要的清理工作。
finaliza方法执行流程:当对象变成(GC Roots)不可达时,GC会判断该对象是否覆盖了finalize方法,若未覆盖或finalize()方法已被调用,则直接将其回收(没有必要执行)。否则,将该对象放入F-Queue队列,由一低优先级Finalizer线程执行该队列中对象的finalize方法。(但并不承诺等待运行结束)执行finalize方法完毕后,GC会再次判断该对象是否可达,若不可达,则进行回收,否则,对象“复活”。