本篇博客仅供博主一人学习使用,内容从书中总结而来,如有内容雷同纯属偶然。
final关键字的可以修饰类成员变量和方法中的局部变量。final的意思就是最终,所以在java中就有只能定义一次或者是不可修改的意思。
final修饰类final类不能被继承
使用final来修饰的类叫作final类。final类通常功能是完整的,它们不能被继承。Java中有许多类是final的,譬如String, Interger以及其他包装类。
在开发过程中final主和static一起来修饰工具类,使工具类开始就初始化好了并不能继承
如果final修饰父类中的一个方法,那么这个方法不允许子类重写。且final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。
final修饰成员变量如果final修饰局部变量或者是成员变量那么它就是常量
与c++中的const一样,常量声明必须赋值。
1.final关键字提高了性能,JVM和Java应用都会缓存final变量。
2.final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
3.使用final,JVM会对其修饰的内容进行优化。
注意1.在匿名类中所有变量都必须是final变量。 2.final关键字不同于finally关键字,后者用于异常处理。 3.final关键字容易与finalize()方法搞混,后者是在Object类中定义的方法,是在垃圾回收之前被JVM调用的方法。 4.接口中声明的所有变量本身是final的。 5.final和abstract这两个关键字是反相关的,final类就不可能是abstract的,一个不可继承一个必须继承。 6.final方法在编译阶段绑定,称为静态绑定(static binding)。 7.没有在声明时初始化final变量的称为空白final变量(blank final variable),它们必须在构造器中初始化,或者调用this()初始化。 8.final修饰的变量看成常量,在工作中命名规范用大写。



