有人能告诉我为什么String x = new String("xyz");为什么创建的是两个对象么??

解决方案 »

  1.   

    那如果有两条这样的语句String x = new String("xyz");
                       String y = new String("xyz"); 
    这样的话是几个对象??? 
      

  2.   

    为什么是两个对象呢?请看String构造器参考文档中的说明:public String(String original)初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。
    (由于 String 是不可变的,所以无需使用此构造方法,除非需要 original 的显式副本)
      

  3.   

    这样的话就是3个,第二句话的时候,常量池中已经有了一个"xyz",就不会在造一个了,因此只是在堆中另外造了一个新对象,一共是3个