天天看点

Java中final、finally和finalize的区别

final 关键字可以用来声明属性,方法和类,用来表示该关键字修饰的类,方法,变量具有不可变的特性。

(1)final关键字用于基本数据类型前:这时表明该关键字修饰的变量是一个常量,在定义后该变量的值就不能被修改。记得一定要初始化哦!

(2)final关键字用于方法声明前:这时意味着该方法时最终方法,只能被调用,不能被覆盖,但是可以被重载(就是方法名相同,方法参数的个数和类型不同)。

(3)final关键字用于类名前:此时该类被称为最终类,该类不能被其他类继承。因此一个类不能既被声明为 abstract的,又被声明为final的。

finally 是java的一种异常处理机制,是异常处理语句结构的一部分,表示总是执行。

finally是对Java 异常处理模型的最佳补充。finally 结构使代码总会执行,而不管有无异常发生。使用 finally 可以维护对象的内部状态,并可以清理非内存资源。特别是在关闭数据库连接这方面,如果程序员把数据库连接的close()方法放到finally中,就会大大降低程序出错的几率。

finalize 是Object类的一个方法,用于回收资源,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

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

在实际应用中,不要依赖使用该方法回收任何短缺的资源,这是因为很难知道这个方法什么时候被调用。