首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

诡异的StringBuffer!该怎么解决

2012-04-03 
诡异的StringBuffer!!!!!!!!classTest1{publicstaticvoidmain(Stringarg[]){StringBufferbufnewStringBuf

诡异的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的


[解决办法]
哎,看着这个问题就觉得无奈。

热点排行