您的位置:首页 > 产品设计 > UI/UE

Java中StringBuilder的清空方法比较

2015-01-30 16:21 281 查看
摘自:http://blog.chinaunix.net/uid-20745012-id-271466.html

StringBuilder 没有提供clear或empty方法。

清空有3种方法:

  1)新生成一个,旧的由系统自动回收

  2)使用delete

  3)使用setLength

将三种方法循环1000万次,代码:

/**
* @作者 whs
* @创建日期 2015年1月30日
* @版本 V 1.0
*/
package strdemo;

public class StrBuilder {

static String a;
static long time;

public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
StringBuilder sb2=new StringBuilder();
time = System.currentTimeMillis();
for(int i=0;i<10000000;i++){
sb.delete(0, sb.length());
sb.append("someThi1ng");
sb.append("someThi2ng");
sb.append("someThi3ng");
sb.append("someThi4ng");
sb.append("someThi5ng");
sb.append("someThi6ng");
a = sb.toString();
}
System.out.println("Way1="+(System.currentTimeMillis()-time));

time = System.currentTimeMillis();
for(int i=0;i < 10000000;i++){
sb2.setLength(0);
sb2.append("someThin1g");
sb2.append("someThin2g");
sb2.append("someThin3g");
sb2.append("someThin4g");
sb2.append("someThin5g");
sb2.append("someThin6g");
a = sb2.toString();
}
System.out.println("Way2="+(System.currentTimeMillis()-time));

time=System.currentTimeMillis();
for(int i=0;i < 10000000;i++){
StringBuilder sb3=new StringBuilder();
sb3.append("someThing1");
sb3.append("someThing2");
sb3.append("someThing3");
sb3.append("someThing4");
sb3.append("someThing5");
sb3.append("someThing6");
a=sb3.toString();
}
System.out.println("Way3="+(System.currentTimeMillis()-time));

}
}


注意append的字符串要都不相同,否则会因为java 的String pool对结果造成影响(即Way1好于Way2)
结果:

Way1=1672
Way2=1632
Way3=2532

可以将各方法多重复几次,点到顺序,等 总体来看:Way2好于Way1好于Way3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: