黑马程序员技术交流社区

标题: 内存问题 [打印本页]

作者: 董志超    时间: 2013-3-17 15:31
标题: 内存问题
方法中的局部变量存放在栈内存中,那此局部变量用final修饰后,是还是放在栈内存中吗,为什么?
作者: hg3093483    时间: 2013-3-17 15:40
final修饰的变量变了常量
栈中只放临时动态的变量,
堆中放长久动态的变量,
我想所有常量是放全局变量区域里。不是堆也不是栈,可能看起来像堆
作者: 张雪萍    时间: 2013-3-17 15:41
局部变量被final修饰后,就变成了常量,常量放在常量池,这就没有为什么了,这更像是规则。
作者: 孙宁    时间: 2013-3-17 15:47
变量被final修饰后就相当于成了常量,是放在常量池中的
作者: 黑马-李嘉欣    时间: 2013-3-17 15:59
我想这个问题大家都很模糊,特地去查了一下:局部变量用final修饰后是放在方法区的运行常量池。
参考资料:http://ask.itruanjian.com/?note/view/479.html
希望对你有帮助!
作者: 罗威    时间: 2013-3-17 16:18
不是放在栈中,内存有很多区域,而我们要接触和理解的就 以下三个!

栈:存储局部变量
      函数

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

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



                        
作者: 黑马-王鹏    时间: 2013-3-17 16:44
被final修饰的局部变量变成了常量,Java中,因为内存是有限的,而常量的生命周期很长,所以Java单独划分一片区域,就是方法区,
所以常量只存在于方法区中




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2