1.
final
在
Java
中的作用
final作为
Java
中的关键字可以用于三个地方。用于修饰类、类属性和类方法。
特征:凡是引用final
关键字的地方皆不可修改!
(1)修饰类:表示该类不能被继承;
举个例子:
![](https://i-blog.csdnimg.cn/blog_migrate/a7fab0066d4913213bac88a4c06f27a5.jpeg)
people类直接报错。
(2)修饰方法:表示方法不能被重写;
(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。
举个例子:
![](https://i-blog.csdnimg.cn/blog_migrate/71cbde97c2ef5fb5bcfdd12daa955a6e.jpeg)
上面的一段代码中,对变量i和obj的重新赋值都报错了。
2.
final
的用法
被final
修饰的类不可以被继承
被final
修饰的方法不可以被重写
被final
修饰的变量不可以被改变
.
如果修饰引用
,
那么表示引用不可变
,
引用指向的内容可变
.
被final
修饰的方法
,JVM
会尝试将其内联
,
以提高运行效率
被final
修饰的常量
,
在编译阶段会存入常量池中
.
除此之外,
编译器对
final
域要遵守的两个重排序规则更好
:
在构造函数内对一个final
域的写入
,
与随后把这个被构造对象的引用赋值给一个引用变量
,
这两个操作之间
不能重排序 初次读一个包含final
域的对象的引用
,
与随后初次读这个
final
域
,
这两个操作之间不能重排序
.