大家都懂得在java中
String每用一次,比如拼接字符串,虚拟机会重新new一个String,然后将拼得的字符串存放到新的String对象中,而StingBuffer则只会new一个String,也就是在堆空间中开辟一块存储块,这样节省了很多的空间,同时也提高了效率。
以上这些区别,无人不懂,但是好多人没有去体会过,他们之间的区别,导致使用时候不注意,项目中无意间碰到了这个问题,分别使用测试了几次,效果很明显。
for(int i = 0;i < listTowerAll.size();i++){
Object[] obj = (Object[])listTowerAll.get(i);
reStr.append(obj[0].toString() + ",");//id
reStr.append(obj[1].toString() + ",");//名称
reStr.append("tower.png,");//设备类型图片名称
reStr.append(",");//天气图片名称
reStr.append(obj[2].toString() + ",");//经度
reStr.append(obj[3].toString() + ",");//纬度
reStr.append(obj[4].toString() + ",");//图层
reStr.append(obj[5] + ";");//抗风等级
/*reStr = reStr + obj[0].toString() + ",";
reStr = reStr + obj[1].toString() + ",";
reStr = reStr + "tower.png,";
reStr = reStr + ",";
reStr = reStr + obj[2].toString() + ",";
reStr = reStr + obj[3].toString() + ",";
reStr = reStr + obj[4].toString() + ",";
reStr = reStr + obj[5] + ";";*/
}
以上循环中,list集合如果有几千个元素,那么如果使用String进行拼接(注释部分)大概需要耗时20多秒,如果采用StringBuffer进行拼接只需耗时35毫秒左右,先不用比较昊内存大小,只是效率就差了600多倍,可见StringBuffer是被提倡使用的。
ps:ITeye的发表文章的页面修改了,貌似原来的编辑器出不来了,还是公司网速问题,刚自己手动加了
,貌似也不能用,哪里出问题了,哎。。。。有时候产品的改动不一定适应客户的需求,对于客户习惯已经形成的产品,最好不要改变使用界面。