Java中的final关键字可以作用于类、方法以及变量。
- final作用于变量的时候一般会和static同时使用,变量只读不可修改
- final作用于方法时该方法不可被子类重写 编译的时候静态绑定因此效率较高
- final作用于类时该类不可被继承,如String,数值类等就是final的
使用final关键字的好处
- 提高了性能。JVM和Java应用都会缓存final变量
- 可以在多线程的环境下进行共享不需要额外的同步开销
- JVM会对方法类和变量进行优化
需要注意的地方
- final成员变量必须在声明的时候初始化或者在构造器中进行初始化,否则不会通过编译
- 不可对final变量再赋值
- final本地变量必须在声明的时候赋值
- 匿名类中的所有变量都必须的final类型的
- 接口中声明的所有变量本身都是final的
- final和abstract这两个关键字是反相关的,final类就不可能是abstract的。
- final方法在编译阶段绑定,称为静态绑定(static binding)
- 对于集合对象声明为final指的是引用不能被更改,但是你可以向其中增加,删除或者改变内容