String s1 = "abc";//一个对象abc  在字符池里
      String s2 = new String("abc");// 一个对象s2  在堆里,abc在1中以创建
      
看到空上贴子,我觉得和我理解得有差异,不知道是不是我错了,请高手们帮一下啊
我觉得第一行和我理解得一样,关键是第二个,我觉得是newString()创建了一个
对象在堆中,然后在池中创建abc时发现有相同的,则又复制了一个abc到池中,所以第
二句创建了两个对象,加上第一句的一共是三个, 这么理解对吗?期待中

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【lanesea】截止到2008-06-25 12:13:12的历史汇总数据(不包括此帖):
    发帖数:3                  发帖分:60                 
    结贴数:3                  结贴分:60                 
    未结数:0                  未结分:0                  
    结贴率:100.00%            结分率:100.00%            
    敬礼!
      

  2.   

       第二句只创建了一个对象,因为在String pool中已经存在一个"abc"对象了!
      

  3.   

    "abc"这个对象一直只有一个啊
      

  4.   

    如果是String s1 = "abc";
    String s2="abc";这时只有一个abc,s1和s2
    都指向abc
    但new String("abc")不是
    应该重新创建一个吗
      

  5.   

    String s1 = "abc";//s1这个是一个引用类型 ,s1在栈里,指向 数据区的字符串常量 abc
         String s2 = new String("abc");// s2引用类型,指向堆里的对象,new 出来的都在堆里希望对你有帮助!^_^ 
      

  6.   

    当new String("abc")时,发现池中已经有了abc(就是String s1 = "abc"创建的)
    是直接指向它还是再创建一个abc然后再指向 这个新创建的?
      

  7.   

    abc在1中以创建 
    s2是个引用,指向"abc"
      

  8.   

    String s1 = "abc";//一个对象abc  在字符池里 ,s1是引用这个字符串
    String s2 = new String("abc");//这里s2是重新创建的一个对象。和那个不是一回事。
      

  9.   

    当new String("abc")时,//是,正确
    发现池中已经有了abc(就是String s1 = "abc"创建的)//是,正确
    是直接//不,不直接指向它
    它还是再创建一个abc然后再指向 这个新创建的//是,就是这样子的。
      

  10.   


    是直接指向它还是再创建一个abc然后再指向 这个新创建的
      

  11.   

    为什么大家对string的优化这么肯定?
    是的在字符池中如果发现有了”abc“就不创建了,像楼上说的
    但是优化并不代表肯定会这样做呀
      

  12.   


    当执行第一句的时候,就会创建两个对象,因为首先会在字符串池里边查找是否有相同内容的字符串,如果有,就复制一份到堆中,否则就要先在字符串池里边创建这个字符串对象,然后再复制到堆中;
    第二句,因为NEW 所以又创建了一个对象!!!因为字符串池里边已经有了那个对象,所以它不用再到字符串池里边去创建对象了。共计创建了三个对象吧~~~
      

  13.   

    可以用程序试试,办法很简单,
    加上
    s1="xyz",你再看看s2的值是什么就知道了
      

  14.   

    String s1 = "abc";//一个对象abc在字符池里,s1只是引用
    String s2 = new String("abc");// 创建一个新的对象,跟s1没任何关系
    因此字符池里有两个对象。
      

  15.   

    我觉得正解是字符池中有两个对象,“abc”“
    在堆中有一个new String()产生的初始对象!
    谢谢谢谢,不对的请给小弟指点指点点