黑马程序员技术交流社区

标题: 关于局部内部类访问被final修饰的局部变量问题 [打印本页]

作者: 迷失的小Z    时间: 2014-11-19 22:30
标题: 关于局部内部类访问被final修饰的局部变量问题
有个面试题解释是局部内部类访问局部变量要加final修饰是为了延长局部变量的生命周期,这句话我有点不理解,因为局部变量就算被final修饰也不会改变存储的位置,会在方法结束后会在栈内存中被释放,那延长生命周期又指的是啥?不懂不懂……
作者: 杨佳名    时间: 2014-11-19 22:36
原帖copy于网络,介绍的很详细
http://bbs.itheima.com/thread-146551-1-1.html
作者: 迷失的小Z    时间: 2014-11-20 00:28
杨佳名 发表于 2014-11-19 22:36
原帖copy于网络,介绍的很详细
http://bbs.itheima.com/thread-146551-1-1.html

哦  thanks
作者: a8851625    时间: 2014-11-20 00:34
加了之后会改变变量储存的位置,有个地方叫方法区,专门用于存放静态变量以及方法,还有常量等...
作者: 迷失的小Z    时间: 2014-11-20 00:38
a8851625 发表于 2014-11-20 00:34
加了之后会改变变量储存的位置,有个地方叫方法区,专门用于存放静态变量以及方法,还有常量等... ...

不会改变在内存中的存储位置,在栈内存的还是在栈内存,堆内存的还是在堆内存,再说final修饰的变量是最终变量,可以理解为常量但并非常量,所以是不会存储在常量池的……
作者: theking    时间: 2014-11-20 00:44
楼上正解!
作者: a8851625    时间: 2014-11-20 00:45
方法区:在java的虚拟机中有一块专门用来存放已经加载的类信息、常量、静态变量以及方法代码的内存区域,叫做方法区。
常量池:常量池是方法区的一部分,主要用来存放常量和类中的符号引用等信息。
堆区:用于存放类的对象实例。
栈区:也叫java虚拟机栈,是由一个一个的栈帧组成的后进先出的栈式结构,栈桢中存放方法运行时产生的局部变量、方法出口等信息。当调用一个方法时,虚拟机栈中就会创建一个栈帧存放这些数据,当方法调用完成时,栈帧消失,如果方法中调用了其他方法,则继续在栈顶创建新的栈桢。

作者: 这是我的地盘    时间: 2014-11-20 01:04
同求,不明白.....




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