final、finally和finalize的区别

final、finally和finalize的区别

final

1)修饰变量,必须被初始化。在定义的时候,或者在初始化块或类的构造器中初始化。不可以在静态初始化块中初始化。

2)修饰静态变量,可以在静态初始化块中初始化,不可以在初始化块中初始化,不可以在类的构造器中初始化

3)final修饰的变量效率比普通变量更高。

4)修饰方法,该方法不能被子类重写

5)final类效率更高,是最终类,其属性可被修改,final不能修饰接口和抽象类。


finally

1)finally只能用在try/catch语句中并且附带着一个语句块,表示这段语句最终总是被执行。

2)finally语句块是在循环被跳过(continue)和中断(break),返回(return)之前之前被执行的。

3)使用system.exec()可以跳过finally语句。

注释:编译器在编译return new ReturnClass();时,将它分成了两个步骤,new ReturnClass()和return,前一个创建对象的语句是在finally语句块之前被执行的,而后一个return语句是在finally语句块之后执行的,也就是说finally语句块是在程序退出方法之前被执行的。


finalize

1)finalize是java.lang.Object类的一个方法,因此Java中所有类都从Object类中继承finalize()方法。

2)当垃圾回收器(garbage colector)决定回收某对象时,finalize()方法用作回收特殊渠道申请的内存,以及垃圾回收前的必要清理工作。

你可能感兴趣的:(final、finally和finalize的区别)