拥有内部类的方法中的变量不可改变(尽量写上final)。不写也可以,但是不可改变。
package zhang;
public class z {
public void method() {
int a=10;
final int b=20;
a=20; //发生改变,故下方println(a)会报错
class in{
public void print() {
System.out.println(b);//不会报错,因为b并没有发生改变。
System.out.println(a);//会报错
}
}
}
}
原理:方法存在于栈当中,使用后就将会被删除,但是class使用需要new(则放在堆中),故class的生命周期比方法的生命周期更长,因此就规定方法中的变量不可变。