关键字final&finally&finalize

final关键字

final修饰类

final类通常功能是完整的,它们不能被继承。

Java中有许多类是final的,譬如String, Interger以及其他包装类。

final修饰变量

凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量。

final变量经常和static关键字一起使用,作为常量。

final变量可以在任何可以被始化的地方被始化,但只能被初始化一次.一旦被初始化后就不能再次赋 值(重新指向其它对象),作为成员变量一定要显式初始化,而作为临时变量则可以只定义不初始化(当然也不能引用)

final修饰方法

方法前面加上final关键字,代表这个方法不可以被子类的方法重写。

final修饰方法形参

形参的值无法被更改(编译时报错) 参考博文:JAVA方法中的参数用final来修饰的原因

 //如果不是final 的话,我可以在checkInt方法内部把i的值改变(有意或无意的,
 //虽然不会改变实际调用处的值),特别是无意的,可能会引用一些难以发现的BUG
 publicstaticvoid checkInt(int i)
 {
       i = 200;//这样是可以的,不会编译出错的
       //do something
 }

 //如果是final 的话,我可以在checkInt方法内部就没办法把i的值改变
 //可以完全避免上面的问题
 publicstaticvoid checkInt(final int i)
 {
       i = 200;//这样是不可以的,会编译出错的
       //do something
 }

 //final 的引用类型方法参数
 publicstaticvoid checkLoginInfo(final LoginInfo login)
 {
       login = new LoginInfo();//error,编译不过去
       //do something
 }
 //非final的引用类型方法参数
 public staticvoid checkLoginInfo(LoginInfo login)
 {
       //没有任何问题,但是肯定不符合此参数存在的初衷
       login = new LoginInfo();
       //do something
 }

finally关键字

用于try/catch语句中,表示这段语句最终总是被执行

finalize关键字

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

一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法。并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存