• 目录

final、finally、finalize

阅读量: 242 编辑

final、finally、finalize 的区别

final是Java的关键字,也是变量、类、方法的修饰符

  • final修饰的变量,如果是基本数据类型,则不可以被修改。如果是对象类型,则不可以再指向其他的对象,但是对象的内容是可以改变的。

  • final修饰的类,不可以被继承。比如String类。

  • final修饰的方法,不可以被重写。private方法会被隐式的指定为final的。

finally 是关键字,在异常处理的时候使用。

try{

}catch(Exception e){
	//catch可以不写
}finally{
	//finally中一定会被执行
}
  • 可以用try-catch、try-finally 、 try-catch-finally。

  • 如果加了finally,那么finally中的代码最后会被执行,一般用于释放资源,比如I/O资源。不会被执行的情况是,在try中执行了退出JVM,比如 system.exit(n)。

  • 如果finally中有return语句,则会覆盖 try 和 catch 中的return,导致二者都不会return。所以在finally中不建议使用return。

finalize 是Object类中的protected方法

  • GC在销毁对象之前都会调用这个方法。

  • 开发者可以重写这个方法实现资源的释放。

  • finalize 可能会带来性能问题,GC最多会执行一次。

  • 目录