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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lhwinner 中级黑马   /  2015-5-24 15:13  /  499 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

局部内部类为什么访问类中方法的变量时,此变量要用final修饰,fianl修饰的变量会存储在常量池中,和这个有关系吗?请大神帮我讲解一下这个调用在内存中的过程.

5 个回复

倒序浏览
延长局部变量的生命周期啊,局部类创建对象存储在堆中,局部变量存储在栈中,函数结束就消失了
回复 使用道具 举报
不加final 局部变量会随着调用结束而消失的 如果局部内部类中还要使用着这个变量那么这个变量必须要存在所以加final就是延迟这个变量的生命周期
回复 使用道具 举报
因为局部内部类,在运行一次之后,它的值会消失,如果代码还没有执行完毕的情况下,那就局部内部类就没有值了,所以就要加final变成常量
回复 使用道具 举报
学习了~~~
回复 使用道具 举报
局部变量的内存是放在栈里面,而局部内部类的方法放在方法区,它不会随着局部变量的消失而消失。为了随时都能调用方法,所以局部变量用final修饰。因为final修饰的是常量,运行的时候它的内存会存放在方法区中。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马