1.System.out.println("inner:"+x);//这里x未被final修饰,内部类Inner为什么能直接访问?
因为x省略了对外部类的引用。完整写出来应该说是这样:Outer.this.x
2,out.method(21);//变量a被final修饰,这里为什么可以重新赋值为21?
参数被final修饰,说明他只能被赋值一次!你的意思是为什么第一次赋值为9,为什么还能赋值为21吧。
这个是因为第一次你调用method方法,在方法执行结束以后,就出栈了。所以第二次很可以赋值。其实并不是你认为的重新赋值。第二个method方法,并不是第一个,他们在内存中的地址是不同的。 |