final关键字的作用和用法?
请详细解释Java中final关键字的三种使用场景:修饰类、方法、变量(包括基本类型和引用类型)。说明各自的限制和语义,以及final与性能的关系。
回答
我是大山
final修饰类:类不可被继承(如String、Math等工具类)。final类的所有方法都隐式为final(但字段不一定)。
final修饰方法:方法不可被子类重写(Override),但可以被子类继承调用。通常用于防止子类修改父类核心逻辑的实现。
final修饰变量:
- 基本类型变量:值一旦赋值不可更改。
- 引用类型变量:引用不可指向其他对象,但对象内部状态可修改。
- final成员变量必须在声明时、构造方法中或实例初始化块中赋值。
性能优化:final变量可被JVM和编译器优化(内联、常量折叠);final方法可能被JIT内联优化。final类可简化虚方法分派。
与其他关键字组合:final + static 定义常量。