StringBuilder 的三种清空方式:
- 直接在循环中new StringBuilder ();每次都重新new出来
- 使用delete(0,length());清除没一个元素
- 使用setLength( 0 ); 长度设置为 0
直接上测试代码:
public static void main(String[] args) {
//第一种方法:-------------------不断new------------------------------
StringBuilder stringBuilder = new StringBuilder();
long start = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
stringBuilder = new StringBuilder();
stringBuilder.append("aaa");
stringBuilder.append("bbb");
stringBuilder.append("ccc");
stringBuilder.append("ddd");
stringBuilder.append("eee");
}
long end = System.currentTimeMillis();
System.out.println("方法一new:"+(end - start));
//第二种方法:-----------builder1.delete(0, builder.length());------------
long start2 = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
stringBuilder.delete(0,stringBuilder.length());
stringBuilder.append("aaa");
stringBuilder.append("bbb");
stringBuilder.append("ccc");
stringBuilder.append("ddd");
stringBuilder.append("eee");
}
long end2 = System.currentTimeMillis();
System.out.println("方法二delete:"+(end2 - start2));
//第三种方法:------------------setLength(0);---------------------------
long start3 = System.currentTimeMillis();
for (int i = 0; i < 100000000; i++) {
stringBuilder.setLength(0);
stringBuilder.append("aaa");
stringBuilder.append("bbb");
stringBuilder.append("ccc");
stringBuilder.append("ddd");
stringBuilder.append("eee");
}
long end3= System.currentTimeMillis();
System.out.println("方法三setLength:"+(end3 - start3));
}
测试结果:
总结:
测试了很多次发现,这三种清空方式,方法二和方法三是差不多的,方法一效率最慢,建议使用方法二;