关于内部类的问题,摘自博客,博客内容如下。看不明白程序下边的第一句。还有作者的意思是输出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修饰的变量已经从栈内存中消失了,类再次调用这个方法时,已经是另一变量,所以可以重新被传值。
|
|