java中final,finally,finalize三个关键字的区别
final
可以作为修饰符修饰变量、方法和类。
被final修饰的变量必须在初始化时给定初值,以后在使用时只能被引用而不能被修改。
被final修饰的方法不能够在子类中被重写(override);
被final修饰的类不能够被继承。
finally
finally用在异常处理中定义总是执行代码,无论try块中的代码是否引发异常,catch是否匹配成功,finally块中的代码总是被执行,除非JVM被关闭,通常用作释放外部资源(不会被垃圾回收器回收的资源)。
finalize
finalize方法在垃圾回收器执行内存对象清理时会调用finalize()方法进行前期的清理工作。
这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。
它是在 Object 类中定义的,因此所有的类都继承了它。
子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。