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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

有个面试题解释是局部内部类访问局部变量要加final修饰是为了延长局部变量的生命周期,这句话我有点不理解,因为局部变量就算被final修饰也不会改变存储的位置,会在方法结束后会在栈内存中被释放,那延长生命周期又指的是啥?不懂不懂……

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

7 个回复

正序浏览
同求,不明白.....
回复 使用道具 举报
方法区:在java的虚拟机中有一块专门用来存放已经加载的类信息、常量、静态变量以及方法代码的内存区域,叫做方法区。
常量池:常量池是方法区的一部分,主要用来存放常量和类中的符号引用等信息。
堆区:用于存放类的对象实例。
栈区:也叫java虚拟机栈,是由一个一个的栈帧组成的后进先出的栈式结构,栈桢中存放方法运行时产生的局部变量、方法出口等信息。当调用一个方法时,虚拟机栈中就会创建一个栈帧存放这些数据,当方法调用完成时,栈帧消失,如果方法中调用了其他方法,则继续在栈顶创建新的栈桢。
回复 使用道具 举报
theking 来自手机 中级黑马 2014-11-20 00:44:08
地板
楼上正解!
回复 使用道具 举报
a8851625 发表于 2014-11-20 00:34
加了之后会改变变量储存的位置,有个地方叫方法区,专门用于存放静态变量以及方法,还有常量等... ...

不会改变在内存中的存储位置,在栈内存的还是在栈内存,堆内存的还是在堆内存,再说final修饰的变量是最终变量,可以理解为常量但并非常量,所以是不会存储在常量池的……
回复 使用道具 举报
加了之后会改变变量储存的位置,有个地方叫方法区,专门用于存放静态变量以及方法,还有常量等...
回复 使用道具 举报
杨佳名 发表于 2014-11-19 22:36
原帖copy于网络,介绍的很详细
http://bbs.itheima.com/thread-146551-1-1.html

哦  thanks
回复 使用道具 举报
原帖copy于网络,介绍的很详细
http://bbs.itheima.com/thread-146551-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马