代码段1: 
String name= new StringBuffer(“HuangWeiFeng”); 
name+=”is my”; 
name+=”name”; 
代码段2: 
StringBuffer name=new StringBuffer(“HuangWeiFeng”); 
name.append(“is my”); 
name.append(“name.”).toString(); 
看资料上说代码段1生成了8个对象,代码段2生成了4个对象
请高手们给我仔细解释一下各个对象怎么生成的,干什么的?谢谢了

解决方案 »

  1.   

    我只看出第一段里有6个对象,第二段里有3个对象
    第一段:(用String类每一次用+号连接字符串都要在字符串池里搜索有没有要连接的字符串,要是没有就创建一个放在字符串池里)
    定义一个name(1)对象,然后在字符串池里创建了一个"HuangWeiFeng"(2)字符串对象,让name指向"HuangWeiFeng",
    然后第二句代码,又在字符串池里创建了一个"is my"(3)字符串对象,然后把它和"HuangWeiFeng"连接起来又组成一个新的字符串对象(4)在字符串池里,同时让name指向这个新的对象,
    第三句代码,又在字符串池里创建了一个"name"(5)字符串对象,然后把它再和前面的(4)连接起来组成又一个新的字符串对象(6),同时让name(1)指向它第二段:(用StringBuffer类只创建一个字符串对象,用append()方法连接字符串不创建新的对象,而只是把要连接的字符串连接到老的字符串对象)
    定义一个name(1)对象,指向"HuangWeiFeng"(2)字符串对象,
    第二行只是给name对象连接了一个字符串,
    第三行连接之后用toString()把name 转化成一个新的字符串对象(3)