日期:2014-05-20  浏览次数:20677 次

诡异的StringBuffer!!!!!!!!
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]);
}

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

------解决方案--------------------
是这样的

Test1中,你构造的StringBuffer数组的三个元素是同一个引用

而Test2中是三个对象
------解决方案--------------------
第一段程序只有一个对象,第二段程序有三个对象
------解决方案--------------------
.....这不是废话吗?
第一个 数组中所有的都是引用buf
第二个 数组中的每个都不一样 都是重新new stringbuffer的


------解决方案--------------------
哎,看着这个问题就觉得无奈。