Java关键字 - final
概念
在Java中,我们可以通过final
来表示某个变量、某个方法,甚至是某个类是“不变的”或“无法改变的”。
怎么使用final
final变量
final
修饰的变量称之为常量,其主要应用于以下地方:
- 编译器常量,永远不可改变。
- 运行其初始化时,我们希望它不会被改变。
对于编译器常量,它在类加载的过程就已经完成了初始化,所以当类加载完成后是不可改变的。而对于运行时变量,也称为空白final
,即代表先声明,后赋值这一过程。
运行时变量可分为基本数据类型与引用数据类型,其中基本数据类型不可变的是内容,而引用数据类型的不可变的是引用,引用所指的对象内容是可变的。
1 | public class Test { |
final方法
被final
修饰的方法都是不能被继承、更改的。
1 | public class Father { |
final参数
被final
修饰的参数都是不可变的,即在函数作用域内,该参数的值都是不可变的。
1 | public void hello(final String str) { |
final类
被final
修饰的类是不允许被继承的,所以可视该类为最终类。
1 | public final class Father { |
final能提高性能吗?
基于JVM对于声明为final的局部变量(local var)做了哪些性能优化?与在Java中使用final关键字会提高性能吗?两文,可以归纳总结出final
关键字并不会从性能上有很大的提升,甚至可以说是没有。反而要求设计者在程序设计中,不要过分追求性能,需要注重的是代码的可读性与可维护性。
参考资料