String str = "abc";
这里的"abc"是放在栈里还是堆里呢
今天看了个贴说是放在栈里,我一直以为是跟对象一样放在堆里,请高手赐教~

解决方案 »

  1.   

    str放在栈里,“abc”放在字符串常量池里
      

  2.   

    这个是放栈的. .用new 就是放堆里的 
      

  3.   

    学习了。以前一直以为在栈里(因为栈里放对象引用和基本类型),后来一翻TIJ,发现基本类型(boolean、char、byte、short、int、long、float、double、void)里没有String,呵呵。然后看到一二楼的回复,又去网上搜了一下,看到一篇文章http://shengli.javaeye.com/blog/338110。原来String是放在字符串常量池中的,对象不可变,所以可以共享。另外还有两篇文章,《主题:【总结】String in Java》http://www.javaeye.com/topic/522167,《详解Java String字符串对象的创建及管理》http://java.chinaitlab.com/Spring/765579.html,楼主有时间看看,我正在看,有点看不懂。
      

  4.   

    请问字符串池是在堆里还是栈里呢?还是JVM独立出来的一块区域空间?
      

  5.   

    看网上说字符串常量池是jvm中的