黑马程序员技术交流社区
标题:
final修饰的局部变量是存放在栈中还是在常量池中
[打印本页]
作者:
黑马李超
时间:
2013-3-20 18:55
标题:
final修饰的局部变量是存放在栈中还是在常量池中
本帖最后由 黑马李超 于 2013-3-20 20:20 编辑
final修饰的局部变量是存放在栈中还是在常量池中
如果是放在常量池中,局部执行结束后是否会立即释放
另外常量池中的常量的生命周期是怎么样的
作者:
李阳阳
时间:
2013-3-20 19:34
存放在常量池中。首先final关键字对于变量的存储区域是没有任何影响的。jvm规范中,类的静态变量存储在方法区,
实例变量存储在堆区。也就是说static关键字才对变量的存储区域造成影响。final关键字来修饰变量表明了该变量一
旦赋值就无法更改。在Java中你可以这样理解:所有的变量,包括基本类型和引用类型,它们的变量都是存放在栈中
,栈中的每个变量都包含类型、名称、值这些内容,只不过基本类型变量的值为一个具体的值,而引用类型的变量的
值为对象在堆中的地址。
作者:
田磊阳
时间:
2013-3-20 19:39
java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间。常量池其实也就是一个内存空间,不同于使用new关键字创建的对象所在的堆空间
作者:
刘辉
时间:
2013-3-20 20:07
final修饰的变量是个常量,无法更改.而常量是在方法区中的静态池中的,所以修饰的局部变量是在常量池中的.至于常量池中的常量生命周期的,举个例子,比如你String s="abcd",那么就形象得理解为常量池中有26个英文字母,从其中取出abcd组合起来赋值,其中就省却了每次都要创建新对象的麻烦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2