给x 赋值是一个
new String(……)是另一个

解决方案 »

  1.   

    初始化"xyz"时,新建了一个对象。
    x = new String("xyz");拷贝了上面的对象的内容并用这些内容新建了一个对象,把x指向这个新的对象。
    y = "abc",新建对象"abc",并让y指向它。
    x = x+y; 因为String是静态的对象,它的内容是不可变的,所以x+y时用上面得到的x及y的内容新建了一个对象,并让x指向这个新建的对象。
    所以共是四个。
      

  2.   

    是4个,这个问题是java语言中的疑点,由于String对象是只读类,所以每一次赋值都创建一个新的对象。
      

  3.   

    初始化"xyz"时,新建了一个对象。
    x = new String("xyz");拷贝了上面的对象的内容并用这些内容新建了一个对象,把x指向这个新的对象。
    y = "abc",新建对象"abc",并让y指向它。
    x = x+y; 因为String是静态的对象,它的内容是不可变的,所以x+y时用上面得到的x及y的内容新建了一个对象,并让x指向这个新建的对象。
    所以共是四个。
      

  4.   

    呵呵,应该清楚了吧?
    to Tasia(这里是CSDN吗?) 
    ......x = x+y; 因为String是静态的对象,它的内容是不可变的.....
                             ^^^^^^^^^^^             ^^^^^^^^笔误了吧?应该是final,而不是static。
      

  5.   

    该说的楼上都说了
    补充:
    String x=new String("xyz");
    这样的写法是不好的,应为它new了两个对象
    String x = "xyz";
    才是高效的!推荐看看高效java,很多基础问题都会解决的!