final变量的作用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32635069/article/details/82813431

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

猜你喜欢

转载自blog.csdn.net/qq_32635069/article/details/82813431