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));
}
測試結果:
總結:
測試了很多次發現,這三種清空方式,方法二和方法三是差不多的,方法一效率最慢,建議使用方法二;