读书人

诡异的StringBuffer!该怎么解决

发布时间: 2012-04-03 12:38:19 作者: rapoo

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


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

读书人网 >J2SE开发

热点推荐