A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这个问题纠结了一下,刚在网上找到答案了,希望跟大家分享一下,让跟我一样不懂的同学也看看。

首先,内部类和外部类其实是处于同一个级别,
内部类不会因为定义在方法中就会随着方法的执行完毕而跟随者被销毁。
问题就来了,如果外部类的方法中的变量不定义final,
那么当外部类方法执行完毕的时候,这个局部变量肯定也就被垃圾回收器回收了,
然而内部类的某个方法还没有执行完,这个时候他所引用的外部变量已经找不到了。
如果定义为final,java会将这个变量复制一份作为成员变量内置于内部类中,这样的话,
由于final所修饰的值始终无法改变,所以这个变量所指向的内存区域就不会变。

评分

参与人数 2技术分 +1 黑马币 +6 收起 理由
敏敏好学 + 1
水竹 + 6

查看全部评分

2 个回复

倒序浏览
刚好想到这个问题,谢谢分享
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马