string a = new String("xyz"); 创建了2个对象
 string a = new String("xyz"); String b= "xyz"; 还是创建了2个对象
 string a = new String("xyz"); String b= "xyz"; c=a+b;创建了几个对象啊!请高手指点.

解决方案 »

  1.   

    string a = new String("xyz"); 创建了2个对象
     string a = new String("xyz"); String b= "xyz"; 创建了3个对象 string a = new String("xyz"); (2)String b= "xyz"; (1)c=a+b;(1)共创建了4个对象啊!请高手指点.
      

  2.   

    1."xyz"
    2.new String("xyz")
    3.c=a+b
      

  3.   

    string a = new String("xyz"); String b= "xyz"; c=a+b;
    首先"xyz"是一个,放在常量池中.
    a是一个
    b指向常量池中的 "xyz",所以不需再创建
    c是一个
    总共3个
      

  4.   

    在编译时,产生"xyz"对象,存放于JAVA POOL中,在运行时产生 String a = new String..,所以两个对象!在编译时,产生"xyz"对象,存放于JAVA POOL中(只产生一个"xyz"对象),在运行时产生 String a = new String..(String b没有new String 所以运行时不会产生新String,b引用的就是原来java pool中的对象.),所以产生两个对象.前面与第二个例子一样,两个对象,C在运行时产生新对象,String是不可修改的,所以a+b是产生一个新对象.所以三个对象.
      

  5.   

    3个对象,String是一个强不变类型,只要对象产生了就不能修改
      

  6.   

    3个对象。string a = new String("xyz"); String b= "xyz"; c=a+b;a是第一个对象。
    new String("xyz")一个对象
    c一个对象。
      

  7.   

    (1)当执行 String a = new String("xyz"); 时
    先在棧里创建一个"xyz"字符串对象,
    然后,由new关键字在堆里创建一个String对象,然后把棧里的"xyz"复制过来存进去
    所以,这时是共产生两个对象了.(2)接着执行  String b = "xyz";
    由于棧里创建变量空间的一个规则:如果有相同的对象,则不再创建,直接指向已存在对象;如果要创建的对象不存在,则创建一个新对象!
    所以,由于(1)中的执行,棧里已存在"xyz"对象,不再重新创建,而是b直接对向"xyz",
    因此,这时还是只创建了两个对象!
    (3)由于Sring变量一但创建,就不能更改!
    所以,当执行 c = a + b;时
    会新创建一个String对象来存放,
    所以,这时共有3个对象了。我这样说不能对不对,请大家指教
      

  8.   

    1)当执行 String a = new String("xyz"); 时 
    先在棧里创建一个"xyz"字符串对象, 
    然后,由new关键字在堆里创建一个String对象,然后把棧里的"xyz"复制过来存进去 
    所以,这时是共产生两个对象了. (2)接着执行  String b = "xyz"; 
    由于棧里创建变量空间的一个规则:如果有相同的对象,则不再创建,直接指向已存在对象;如果要创建的对象不存在,则创建一个新对象! 
    所以,由于(1)中的执行,棧里已存在"xyz"对象,不再重新创建,而是b直接对向"xyz", 
    因此,这时还是只创建了两个对象! 
    (3)由于Sring变量一但创建,就不能更改! 
    所以,当执行 c = a + b;时 
    会新创建一个String对象来存放, 
    所以,这时共有3个对象了。 
      

  9.   

     string a = new String("xyz"); 
     这样写的吗?
     String a = new String("xyz"); 创建了2个对象  
    是创建2个对象
     String a = new String("xyz"); String b= "xyz"; c=a+b;创建三个对象
      

  10.   

    string a = new String("xyz"); String b= "xyz"; String c=a+b;
    创建三个对象
      

  11.   

    Java中数据类型分为两大类,上次课已经讲完了,是基本类型和对象类型。相应的,变量也就有两种类型:基本类型和引用类型。既然引用不是基本类型,那么他就是对象类型,所以是不是应该把引用也考虑进创建的对象中呢?!!!
      

  12.   

    谢谢大家!先把引用不考虑进创建的对象中,
    我总结大家的意思是,code : string a = new String("xyz"); String b= "xyz"; c=a+b; 
    在棧里创建一个"xyz"字符串对象,  一个"xyzxyz"字符串对象,堆里创建一个"xyz"字符串对象,共3个!不赞成的可以说说看法.