用关键字final来修饰,表示“最终的”。
final可以用来修饰局部变量、成员变量、类和方法。
特点:
- final修饰的类不能被继承,提高安全性,提高程序的可读性。
- final修饰的方法不能被子类重写。
- final修饰的成员变量即称常量(只能被赋值一次,赋值后不能被修改)。
- 线程安全。
final修饰的成员变量,系统不会隐式赋值,必须定义时显示初始化或构造器初始化。
示例:
class Demo {
public final int count = 3;
public final String name;
Demo(String name) {
this.name = name;
}
}
若final和static同时修饰的成员变量,必须显示初始化!!!因为static修饰所属于类,在构造器之前就初始化了。
示例:
class Demo {
public final static int pageSize = 10;
}
为什么是线程安全?
因为final修饰的成员,会保证成员在初始化之后对其他线程可见,保证线程的安全。
参考文献:
- Java中final变量为什么在使用前必须要进行初始化:https://blog.csdn.net/xtsylc/article/details/78463211
- 关于java中final关键字与线程安全性:https://www.cnblogs.com/mianlaoshu/articles/3648403.html
- 纳尼?final与线程安全有啥关系?安全发布是个啥?中篇[十三]:https://blog.51cto.com/u_15127698/2842942