诡异的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的
------解决方案--------------------哎,看着这个问题就觉得无奈。