final关键字

final

final 类不能被继承,所有成员方法都会被隐式地指定为 final 方法,final 方法不能被重写。

final 变量表示常量,只能被赋值一次,赋值后值不再改变。

  • 修饰基本数据类型时,该值在初始化后不能改变。
  • 修饰引用类型时,引用指向的对象在初始化后不能改变,但该对象的内容可以发生变化。

内存语义

  • Store Store 在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。
  • Load Load 初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。