final修饰符
final 修饰变量、类和方法final 修饰变量final 修饰的变量表示常量一旦初始化后不可修改。对于基本类型值不可变对于引用类型引用指向的对象不可变但对象内部属性可变。final int MAX_VALUE 100; final ListString list new ArrayList(); list.add(Hello); // 允许对象内部可变 // list new ArrayList(); // 编译错误引用不可变final 修饰类final 修饰的类不可被继承即没有子类。此时类中的所有方法隐式为 final无需显式声明。final class Parent {} // class Child extends Parent {} // 编译错误无法继承final类final 修饰方法final 修饰的方法不可被子类重写但可被继承调用。若类本身为 final则方法无需再标记 final。class Parent { final void show() { System.out.println(Parent); } } class Child extends Parent { // void show() { System.out.println(Child); } // 编译错误不可重写final方法 }JDK 中的 Math 类案例Math 类是 final 的且构造方法私有化确保不可继承和实例化。通过 static 方法提供工具函数直接通过类名调用。// Math类声明JDK源码片段 public final class Math { private Math() {} // 构造方法私有化 public static final double PI 3.141592653589793; public static int max(int a, int b) { return a b ? a : b; } } // 使用示例 double pi Math.PI; int maxVal Math.max(10, 20);关键点Math 类不可继承final不可实例化私有构造方法。方法均为 static通过Math.方法名()直接调用。常量如 PI通过final static声明。