(java)局部内部类-方法变量常值问题-final

拥有内部类的方法中的变量不可改变(尽量写上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的生命周期比方法的生命周期更长,因此就规定方法中的变量不可变。

发布了35 篇原创文章 · 获赞 34 · 访问量 1872

猜你喜欢

转载自blog.csdn.net/zhq215/article/details/105395291