final是表示不可变性的修饰符,public static final才构成常量;修饰变量时值或引用不可再赋值,修饰方法时禁止重写,修饰类时禁止继承。
在Java中,final 关键字不是用来定义“常量”的专用语法,而是用来表示“不可变性”的修饰符;我们常说的“常量”,其实是用 public static final 修饰的变量,它具备类级别、全局可见、运行期不可修改三个关键特征。
当 final 修饰一个变量(包括基本类型和引用类型)时,该变量只能被赋值一次,之后不能再修改其值。
用 final 修饰的方法不能被子类覆盖(override),常用于防止核心逻辑被意外修改,或作为性能优化(JVM 可能内联该方法)。
被 final 修饰的类无法被其他类继承,典型例子是 String、Integer 等包装类和重要系统类。
Java 中约定俗成的“常量”写法是三者组合:
。命名习惯:全部大写,单词间用下划线分隔,例如:public static final int MAX_RETRY = 3;
基本上就这些。final 的本质是“不可变承诺”,用对地方能让代码更安全、更易理解,但也不必滥用——比如局部变量加 final 多用于 lambda 或明确表达意图,并非强制要求。