java里final、finally、finalize的区别
final :java 关键字。被final修饰的变量不可进行值更改,必须在定义时一并初始化。如final int i=1,则下面对i只能使用,而不能进行更改如i++,更改必定会报错。同理,final修饰方法时,则子类不能对该方法进行重写;被final修饰的类不允许继承。所以,一个类不能不同被abstract和final修饰。(实操验证见下图)
finally:多见与java的try..catch..finally块,只有try语句块正常执行(不做退出线程,死机等情况的考虑),那么无论catch语句块是否执行 ,finally语句块都会执行,且最终整个try..finally代码块返回情况以finally中的return结果为准(见下图)。所以在代码逻辑中有需要无论发生什么都必须执行的代码,就可以放在finally块中。
finalize:类的finalize()方法,可以告诉垃圾回收器应该执行的操作,该方法从Object类继承而来。在从堆中永久删除对象之前,垃圾回收器调用该对象的finalize()方法。下图是Object类中的finalize 方法。