A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 荒丶 中级黑马   /  2016-4-5 23:24  /  399 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo_Package {
        //测试为什么局部类使用局部变量时,要把局部变量声明成final?
        public static void main(String[] args){
                Outer o = new Outer();
                o.method();
        }
}

class Outer {
        public void method() {
                int num = 10;
                class Inner {
                        public void print(){
                                System.out.print(num);
                        }
                }
                Inner i = new Inner();
                i.print();
        }
}

因为只有把变量放在常量池,那么在类被释放的时候.这个变量才能保存.才可以继续使用.但是在JDK1.8这个特性改了下常量池机制,  把这种只改变一次的变量自动视为常量.所以1.8就算不定义final也可以调用

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马