class Test1{
public static void main(String arg[]){
StringBuffer buf=new StringBuffer("@");
StringBuffer[] sb=new StringBuffer[]{buf,buf,buf};
sb[2].append("aaa");
for(int i=0;i<sb.length;i++){
System.out.println(sb[i]);
}

}
}
______________________________________________________________
class Test2{
public static void main(String arg[]){
StringBuffer buf=new StringBuffer("@");
StringBuffer[] sb=new StringBuffer[]{new StringBuffer("@"),new StringBuffer("@"),new StringBuffer("@")};
sb[2].append("aaa");
for(int i=0;i<sb.length;i++){
System.out.println(sb[i]);
}

}
}
______________________________________________________________
这两段程序的结果是什么,原因是什么呢,请告知小弟,万谢!!!

解决方案 »

  1.   

    在我的电脑上得到的结果是:
    @aaa
    @aaa
    @aaa
    _______________________
    @
    @
    @aaa为什么会这样呢?
      

  2.   

    是这样的Test1中,你构造的StringBuffer数组的三个元素是同一个引用而Test2中是三个对象
      

  3.   

    .....这不是废话吗?
    第一个 数组中所有的都是引用buf
    第二个 数组中的每个都不一样 都是重新new stringbuffer的