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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© LSK~ 中级黑马   /  2015-6-3 11:48  /  188 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于内部类的问题,摘自博客,博客内容如下。看不明白程序下边的第一句。还有作者的意思是输出7 8?实际运行输出的是4 4。迷惑中!也许是我死扣了,但是我感觉作者有深意。


[java] view plaincopy
1.class Outer  
2.{  
3.    int x = 3;  
4.    void method(final int a)  
5.    {  
6.        final int y = 4;  
7.        //局部内部类  
8.        class Inner  
9.        {  
10.            void function()  
11.            {  
12.                System.out.println(y);  
13.            }  
14.        }  
15.        new Inner().function();//使用局部内部类中的方法。  
16.    }  
17.}  
18.class  InnerClassDemo  
19.{  
20.    public static void main(String[] args)   
21.    {  
22.        Outer out = new Outer();  
23.        out.method(7);//打印7  
24.        out.method(8);//打印8  
25.    }  
26.}  
注:为什么上面的代码中打印的值为什么会改变呢?被final修饰的变量的值是不会被改变的。这里类调用方法使用完后,这时这个被final修饰的变量已经从栈内存中消失了,类再次调用这个方法时,已经是另一变量,所以可以重新被传值。
 

0 个回复

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