• 技术文章 >java >java基础

    java基础:使用final需要注意哪些事项?

    小妮浅浅小妮浅浅2021-04-22 09:48:42原创2132
    下面我们就来明确在变量中使用final的需要注意的规则,以及在局部和匿名类中关于使用final变量的特殊探讨,下面一起来看接下来的内容搞吧。

    1.对于final变量,编译器和处理器都要遵守两个重排序规则

    2.局部内部类和匿名内部类只能访问局部final变量

    为了解决这个问题,我们先要去使用代码去验证一下。

    public class Test {
        public static void main(String[] args)  {     
        }   
        //局部final变量a,b
        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和b,在运行时,main线程快要结束,但是thread还没有开始。因此需要有一种机制,在使得运行thread线程时候能够调用a和b的值,怎么办呢?java采用了一种复制的机制,

    也就说如果局部变量的值在编译期间就可以确定,则直接在匿名内部里面创建一个拷贝。如果局部变量的值无法在编译期间确定,则通过构造器传参的方式来对拷贝进行初始化赋值。

    以上就是我们使用final在变量中需要注意的事项,如果忽略以上两点,很容易出现程序的报错,小伙伴们学习的时候需要留心。

    推荐操作环境:windows7系统、java10版,DELL G3电脑。

    专题推荐:java基础 final
    品易云
    上一篇:java中fina和static的区别是什么? 下一篇:java基础中抽象类如何使用?

    相关文章推荐

    • final作用域的代码一定会被执行吗?• Python finally-资源回收• java基础里final是什么?怎样实现?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网