我们都知道被final修饰的类不能被继承,方法不能被覆写,变量是一个常量只能赋值一次。但如果是下面这种情况怎么可以被多次赋值呢?
代码如下
class Outer
{
int x = 3;
void method(final int a)
{
final int y = a;
//y=0; //把这里的注释去掉就会报错,但是注释掉这句就运行没错。
class Inner
{
void function()
{
System.out.println(y);
}
}
new Inner().function();
System.out.println("y="+y);
System.out.println("x="+x);
}
}
class InnerClassDemo3
{
public static void main(String[] args)
{
Outer out = new Outer();
out.method(7);
out.method(8);
}
}
运行结果如下
7
y=7
x=3
8
y=8
x=3
这里a和y都被赋值了两次,是为什么呢?
是不是每次方法的加载调用完后在内存中就清理掉,在调用再重新加载呢?如果是这样但这都是同一个对象out的方法啊,out类并没有运行完啊?这里有点不懂 求理解好的 给解释一下,谢谢
|
|