关键字final是什么

final修饰变量:

    1.基本类型变量:变量不可变

    2.引用类型:变量指向的引用不可变,并非是应用的值不可变!

### final关键字的含义及其用法 在Java中,`final`关键字具有多种用途,主要用于创建不可变元素,从而增强代码的稳定性和安全性。以下是`final`关键字的主要作用和使用场景: #### 1. 修饰变量 当`final`用于修饰变量时,表示该变量的值一旦被初始化后便不可更改。对于基本数据类型,这意味着其值不能改变;而对于引用类型,则意味着该引用不能再指向其他对象,但对象本身的内容可以修改。 例如: ```java final int number = 10; // number = 20; // ❌ 报错:无法为final变量重新赋值 final List<String> list = new ArrayList<>(); list.add("hello"); // ✅ 允许修改内容 // list = new ArrayList<>(); // ❌ 报错:无法为final变量重新赋值 ``` 上述代码展示了`final`修饰变量的行为[^2]。 #### 2. 修饰方法 当`final`用于修饰方法时,表示该方法不能被子类重写(Override)。这通常用于框架设计中,提供稳定的模板方法,防止被子类恶意修改逻辑。 例如: ```java class Parent { public final void show() { System.out.println("父类方法"); } } class Child extends Parent { // public void show() { } // ❌ 报错:不能重写final方法 } ``` 这种用法确保了某些关键方法的逻辑不会被意外或恶意更改[^2]。 #### 3. 修饰类 当`final`用于修饰类时,表示该类不能被继承。这常用于核心类库的设计中,以保证类的不可篡改性,避免敏感逻辑被子类破坏。 例如: ```java public final class MyFinalClass { // 类体 } class Sub extends MyFinalClass { } // ❌ 编译错误:无法继承final类 ``` 像`String`、`Integer`等核心类都是`final`的,以确保它们的行为不会被改变[^2]。 #### 4. 使用场景 - **增强代码稳定性**:通过`final`修饰变量、方法或类,可以减少潜在的错误,提高代码质量。 - **多线程编程**:`final`修饰的变量在多线程环境中是线程安全的,因为其值不可改变。 - **设计模式**:在框架设计中,`final`方法可以作为模板方法,提供固定的逻辑。 - **工具类保护**:对于底层基础类库的方法,使用`final`可以防止被覆盖,确保逻辑一致性[^3]。 ### 示例代码 以下是一个综合示例,展示`final`关键字的不同用法: ```java public final class Constants { // 不可被继承 public static final int MAX_VALUE = 100; // 不可改变的常量 public final void display() { // 不可被重写的方法 System.out.println("This is a final method."); } } class Example { public static void main(String[] args) { final int number = 10; // 不可改变的局部变量 System.out.println(number); final List<String> list = new ArrayList<>(); list.add("Java"); // 可以修改内容 // list = new ArrayList<>(); // ❌ 报错:无法重新赋值 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值