String s = new String("abc"): 
创建了几个对象?

解决方案 »

  1.   

    Please read this post. Thanks.http://topic.csdn.net/u/20080506/13/ddaf754c-46e1-4d92-af56-a46318bce931.html
      

  2.   

    2个,对象s是创建在内存堆,对象"abc"是在缓冲池里吧
      

  3.   

    得看你的"abc"是不是第一次出现
      

  4.   

    编译器遇到双引号的字符串会调用StringBulder来创建一个对象,然后再用这个对象去创建s对象,所以这条语句创建了两个对象。
      

  5.   

    如果"abc"不是第一次出现,实际上没有对象被创建。
    "abc"被作为常量放在常量区域中,a只是引用到该常量对象。String类型还有个方法用以检测你的新建对象是否已经被放在常量区域,若在就直接引用过去了。记不得这个方法的名字了……