out.method(8);//a不是常量吗?怎么还能再次被赋值?
因为a虽然是个常量,但你把它作为参数定义在method方法里,
就相当于在这个方法的局部有效,a开始没有值,第一次通过out.method(7);
调用method方法把7赋给了a,等程序执行完后,方法也在内存中释放了,a之前的值也没了
第二次再通过out.method(8);调用method方法把8赋给了a,相当于是个全新的a赋了个8
这个肯定是可以赋值的
如果要测试常量是否能被第二次赋值,可以看我下面的代码,把常量y再做自增
代码运行后会提示无法为最终y指定值
class Outer
{
int x = 3;
void method(final int a)
{
final int y = 4;
class Inner
{
void function()
{
y++;
System.out.println(y+a);
}
}
new Inner().function();
}
}
class InnerClassDemo3
{
public static void main(String[] args)
{
Outer out = new Outer();
out.method(7);
out.method(8);
}