一、final(修饰符)
根据修饰的对象不同,有不同的效果。但其本质上表示一种最终状态,即一个不可改变的实体,只能被分配一次。
修饰对象 | 效果 |
---|---|
类 | 不能被继承,final类中的方法默认也是final |
方法 | 不能被重写,private类型的方法默认是final的 |
成员变量 | 不能被重新赋值,即常量(必须在声明的同时赋值) |
二、finally(总是执行)
一般作用在try-catch
代码块中形成try-catch-finally
代码块。finally
代码块中放置一些必须执行的代码,即不论是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。
但由于finally用法的特殊性,即使在
try-catch
代码块中执行了return
语句,其会撤销之前的return语句,继续执行最后的finally
代码块中的代码;
注意:如果在try语句块中执行了System.exit (0)
语句,即直接终止了Java虚拟机的运行,所以finally语句块不会执行;
三、finalize()(一个GC方法)
finalize()
是Java中的一个方法名,Java使用finalize()
方法在垃圾收集器将该对象从内存中清除出去之前,做必要的清理工作。这个方法是由垃圾收集器
在确定这个对象没被引用时,才会对这个对象调用finalize()
方法。
它是在顶级类Object
中定义的,因此所有的类都继承了它,子类重写finalize()
方法以整理系统资源或者执行其他清理工作。