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最多会执行一次。