CodeWalk

final关键字的作用和用法?

作者:我是大山 · 2026-05-30 12:55

请详细解释Java中final关键字的三种使用场景:修饰方法变量(包括基本类型和引用类型)。说明各自的限制和语义,以及final与性能的关系。

回答

我是大山

final修饰类:类不可被继承(如String、Math等工具类)。final类的所有方法都隐式为final(但字段不一定)。

final修饰方法:方法不可被子类重写(Override),但可以被子类继承调用。通常用于防止子类修改父类核心逻辑的实现。

final修饰变量

  • 基本类型变量:值一旦赋值不可更改。
  • 引用类型变量:引用不可指向其他对象,但对象内部状态可修改。
  • final成员变量必须在声明时、构造方法中或实例初始化块中赋值。

性能优化:final变量可被JVM和编译器优化(内联、常量折叠);final方法可能被JIT内联优化。final类可简化虚方法分派。

与其他关键字组合:final + static 定义常量。