final——修饰符(关键字)
final可以修饰类、方法、变量
1.1 修饰类
如果一个类用final进行修饰,则这个类不能被其他任何类所继承,其成员的方法也会被默认为final类型的。
1.2 修饰方法
如果一个方法被final修饰,则这个方法不能被这个类的子类所覆盖,final修饰的方法已经表示此方法是“最后的、最终的”意思。
1.3 修饰变量
final成员变量表示常量,只能被赋值一次,赋值后值不再改变;如果final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象内容是可以发生变化的(即该地址不能发生变化)。用final定义的类成员必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。
举个例子:
2 finally
finally一般和try-catch语句搭配着使用。当try代码块或者catch代码块执行的时候,finally块里面的代码总是被执行。这使得程序员可以在finally块里面做一些善后工作,比如异常的处理,和一些代码的清理。
注意:finally在一些情况下,是不会被执行的:
1、 程序在try语句块之前返回或者抛出异常;
2、 在try语句块中执行了System.exit(0)语句,终止了Java虚拟机的运行,或者当一个线程在执行try语句块或者catch语句块是被打断或者被终止,与其相对应的finally语句块也不会被执行。
Finally代码块语句应该是在控制转移语句之前执行,控制转移语句除了return外,还有break和continue。
3 finallize()
finalize()是Java里面的一个方法,垃圾回收器要回收对象的时候,首先要调用这个类的finalize方法,Object已经实现了其默认的方法。当垃圾回收器不能对一些部分进行正确的回收,这时就需要我们覆盖默认的方法来实现对这部分内容的正确释放和回收。