我从两者的生命周期说起吧函数运行是在内存栈中运行的,局部变量生命周期是从定义开始到出了作用域,一出作用域就消失
对象的生命周期是从创建开始到对象被垃圾回收器回收。
当函数运行到局部变量和局部类时创建了局部变量和局部类的对象。局部类的对象引用了局部变量。
如果局部变量不是final修饰的,那当函数运行完时,局部变量就要消失,而局部类的对象还不会消失(要垃圾回收器回收)
所以这就矛盾了。
sun是这样解决这个问题的,他将变量修饰成final,当局部类调用这个变量的时候,其实不是在调用这个变量,只是复制了这个变量的一个引用,
不知道这样解释清不清楚。
|
|