Java final
final能应用在数据、方法以及类三个场合。
final数据
基本类型
必须给初值,计算可在编译期执行,节省运行时开销。
对象
句柄指向不变,对象内容可变;
可以不指定初始值,即“空白final”:
class A { final Integer a; public A() { a = 1; } }
方法参数
在方法内部能否对final参数进行修改见上
final方法
防止任何继承类改变它的本来含义。
编译器会将调用的final方法以代码片段的方式插入,避免普通方法调用时的系统堆栈开销。但是如果方法体积太大,程序会变得臃肿,不会有性能提升。(“因为任何提升都被花在方法内部的时间抵消了”——Java编程思想)编译器能够自动决定是否“嵌入”,但是不要完全相信编译器,只在方法代码量少或需要禁止方法被覆盖时采用final方法。
final类
不会被继承,final 类中的所有方法都默认为 final。

浙公网安备 33010602011771号