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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董志超 中级黑马   /  2013-3-17 15:31  /  1441 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

方法中的局部变量存放在栈内存中,那此局部变量用final修饰后,是还是放在栈内存中吗,为什么?

点评

再次提醒: 如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,否则将扣除技术分,谢谢  发表于 2013-3-18 12:07
如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-18 06:22

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

6 个回复

倒序浏览
final修饰的变量变了常量
栈中只放临时动态的变量,
堆中放长久动态的变量,
我想所有常量是放全局变量区域里。不是堆也不是栈,可能看起来像堆
回复 使用道具 举报
局部变量被final修饰后,就变成了常量,常量放在常量池,这就没有为什么了,这更像是规则。
回复 使用道具 举报
变量被final修饰后就相当于成了常量,是放在常量池中的
回复 使用道具 举报
我想这个问题大家都很模糊,特地去查了一下:局部变量用final修饰后是放在方法区的运行常量池。
参考资料:http://ask.itruanjian.com/?note/view/479.html
希望对你有帮助!
回复 使用道具 举报
不是放在栈中,内存有很多区域,而我们要接触和理解的就 以下三个!

栈:存储局部变量
      函数

堆:全局变量
      存储数据容器
      存储建立的对象

方法区:class文件
            你的类
            静态
            常量



                        

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
被final修饰的局部变量变成了常量,Java中,因为内存是有限的,而常量的生命周期很长,所以Java单独划分一片区域,就是方法区,
所以常量只存在于方法区中
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马