final变量的作用

本文深入解析final关键字在Java中的多重用途,包括提升性能、确保多线程安全、代码优化及类和方法的锁定特性。探讨final如何影响变量初始化、类继承与方法重写,并通过实例说明其在局部类和匿名类中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

final这个关键字的作用

  • final关键字提高了性能。JVM和java应用都会缓存final变量
  • final变量可以安全的在多线程环境下进行共享,且不需要额外的同步开销
  • 使用final关键字,JVM会对方法、变量及类进行优化

final关键字要注意的一些地方,final主要作用,他会保证安全性,并对代码进行一定的优化

  • 修饰的类不可再被继承
  • 修饰的方法不可在被重写
  • 修饰的成员变量必须在声明时或构造函数中初始化
  • 修饰的静态变量必须在声明时被初始化
  • 修饰的本地方法变量,使用前初始化
  • 接口中的变量默认是final的
  • 在局部类和匿名类中使用的类都是final的,这样来保证数据的一致性
public class Test {
    public static void main(String[] args)  {
         
    }
     
    public void test(final int b) {
        final int a = 10;
        new Thread(){
            public void run() {
                System.out.println(a);
                System.out.println(b);
            };
        }.start();
    }
}

当test方法执行完毕之后,变量a的生命周期就结束了,而此时Thread对象的生命周期很可能还没有结束,那么在Thread的run方法中继续访问变量a就变成不可能了,但是又要实现这样的效果,怎么办呢?Java采用了 复制 的手段来解决这个问题
在内部类中会申明一个相同的局部变量,这样来解决生命周期的问题,可是这样引起了,数据可能不一致的问题,所以要求将即将访问的变量设定为final

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值