String str = new String("abc");到底创建了几个对象,现在说法不一啊,不知道该听谁的啦请问各位高手,创建了几个对象,是哪几个对象,小弟在此谢过

解决方案 »

  1.   

    String s = new String("xyz");创建了几个String Object?两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。
      

  2.   

    楼上说的对,两个对象,一个xyz,一个在内存对象是中指向xyz的对象,
      

  3.   

    .........是两个,但不是楼上两位说的那两个,应该是:一个是常量池中的"xyz",另一个是堆中的"xyz".纠正下楼上两位,str只是一个引用,不是对象,它指向的是堆中的那个"xyz".
      

  4.   

    String s = new String("xyz");
    s也能叫对象?s只能叫引用变量把。
    确实是两个对象,一个编译时在常量池中的xyz;一个是运行时在堆中的xyz
      

  5.   

    还是不是很清楚,我的理解是这样的,
    如果String str = "abc";  就是在栈内存创建(如果已经存在,就用str引用指尚它)如果String str = new String("abc")  就是在堆栈内存中创建(不管以前是否有该对象都创建),并且用str指尚它
    搞不清四楼的所说的常量池中一个,堆中一个什么意思三楼的说引用也是一个对象,不知道是否对
      

  6.   

    回复人:lyazure(Cloe) ( ) 信誉:100 2007-01-22 19:39:37 得分:0
    ? .........是两个,但不是楼上两位说的那两个,应该是:一个是常量池中的"xyz",另一个是堆中的"xyz".纠正下楼上两位,str只是一个引用,不是对象,它指向的是堆中的那个"xyz".正解