例如String str = "abc",同时假设当前栈中没有存储“abc”这个字符串,我知道此时JVM将在栈中创建一个引用变量str和一个字面值为"abc"的地址,但是会不会同时在堆中创建一个String对象?
  找了3篇帖子就有2种不同的说法,晕阿....

解决方案 »

  1.   

    LZ Java里面对象是不会存放到堆栈里面的。一般是放在堆里面。String str="abc";主要是首先检测String pool中是否有”abc“,如果有,就让引用str指向这个对象。如果没有就先创建"abc"对象,然后让str指向这个对象
      

  2.   

    楼主要明白String str = "abc"和String str=new String("abc")是两码事。
    楼上对String str = "abc"解释的很清楚。