java中清空StringBuffer的方法,我能想到的有4种:
1. buffer.setLength(0); 设置长度为0
2. buffer.delete(0, buffer.length()); 删除0到末尾
3. buffer.replace(0, buffer.length(), ""); 替换所有内容为空字符串
4. buffer=new StringBuffer(); 创建新的StringBuffer
那么这4种方法哪种消耗的时间最少呢?
我对上面4种方法分别进行了百万次的循环,代码如下:
public class StringBufferTest {
public static void main(String[] args) {
StringBuffer buffer=new StringBuffer();
Long time1=System.currentTimeMillis();
for(int i=1;i<1000000;i++){
buffer.append("hello,world"+i);
buffer.setLength(0);
}
Long time2=System.currentTimeMillis();
System.out.println("setLength cost==="+(time2-time1)); Long time3=System.currentTimeMillis();
for(int i=1;i<1000000;i++){
buffer.append("hello,world"+i);
buffer.delete(0, buffer.length());
}
Long time4=System.currentTimeMillis();
System.out.println("delete cost==="+(time4-time3)); Long time5=System.currentTimeMillis();
for(int i=1;i<1000000;i++){
buffer.append("hello,world"+i);
buffer.replace(0, buffer.length(), "");
}
Long time6=System.currentTimeMillis();
System.out.println("replace cost==="+(time6-time5)); Long time7=System.currentTimeMillis();
for(int i=1;i<1000000;i++){
buffer.append("hello,world"+i);
buffer=new StringBuffer();
}
Long time8=System.currentTimeMillis();
System.out.println("new cost==="+(time8-time7));
}
}
得到了如下结果,为了排除偶然性,进行了5次测试:
通过上面的结果我们可以看出:
最耗费时间的是创建对象的方法(new StringBuffer()),其次是设置长度的方法(setLength(0));
最节省时间的是删除的方法(delete(0, buffer.length())),其次是替换的方法(replace(0, buffer.length(), ""))。