天天看点

final、finally和finalize()的区别

final:

修饰符(关键字)。

1、 如果一个类被声明为final,意味着它不能在派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract(抽象的)又被声明为final。

2、将变量或方法声明为final,可以保证它们在使用过程中不会被改变。

3、 被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可被修改。

4、将方法声明为final,则只能使用,不能重载。

finally:

异常处理时提供finally块来执行任何清除操作,如果抛出一个异常,那么相匹配的catch语句就会执行,然后控制就会进入finally块(如果有的话)。

try{}

catch{}

finally{}

如果try块里的语句执行那么就跳过catch块执行finally块;

如果try块里的语句不执行那么就执行catch块然后再执行finally块;

也就是说无论什么情况 finally块里的语句都必须要执行,这样会降低程序出错的几率。

finalize:

finalize()方法在Java技术中允许使用。该方法在垃圾收集器将对象从内存中清除出去之前做必要的处理工作,这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的,它是在Object类中定义的,因此所有的类都继承了它,子类覆盖finalize()方法以整理系统资源或执行其他清理工作。

finalize()方法是在垃圾收集器删除对象之前对这个对象调用的,当垃圾回收器(garbage colector)决定回收某对象时,就会运行该对象的finalize()方法。