StringBuffer内容清空效率比较【转载】

在开发程序的时候,经常使用stringbuffer来进行字符串的拼接。如果在循环中来反复的做字符串拼接时,会清空stringbuffer中的内容,然后再拼接新的字符串信息。
例如:
stringbuffer sb = new stringbuffer("");
for (userinfo ui : userinfolist) {
    sb = new stringbuffer("");
    sb.append("姓名:");
    sb.append(ui.getname());
    sb.append("  ");
    sb.append("年龄:");
    sb.append(ui.getage());
    system.out.println(sb.tostring());
}
在循环中使用sb = new stringbuffer("");来清空sb中的信息。
 
stringbuffer提供了以下连个方法:
1、[url=http://mce_host/admin/blogs/mk:@msitstoree:][b]delete[/b][/url](int start, int end)
          移除此序列的子字符串中的字符
2、[url=http://mce_host/admin/blogs/mk:@msitstoree:][b]setlength[/b][/url](int newlength)
          设置字符序列的长度。
 
测试程序:
   private static void teststringbufferclear() {
        stringbuffer sbf = new  stringbuffer("wwwwww");
        stringbuffer sbi = new  stringbuffer("wwwwww");
        long s1 = system.currenttimemillis();
        for (int i = 0; i < 500000; i++) {
         sbi.setlength(0);
        }
        long s11 = system.currenttimemillis();
        system.out.println("stringbuffer-setlength:" + (s11 - s1));
  
        s1 = system.currenttimemillis();
        for (int i = 0; i < 500000; i++) {
         sbf.delete(0, sbf.length());
        }
        s11 = system.currenttimemillis();
        system.out.println("stringbuffer--delete:" + (s11 - s1));
        s1 = system.currenttimemillis();
        for (int i = 0; i < 500000; i++) {
         sbf = new stringbuffer("");
        }
        s11 = system.currenttimemillis();
        system.out.println("stringbuffer--new stringbuffer:" + (s11 - s1));
       }
结果:
stringbuffer-setlength:63
stringbuffer--delete:109
stringbuffer--new stringbuffer:78
 
结论:
    要通过使用sbi.setlength(0);来清空stringbuffer对象中的内容效率最高。

你可能感兴趣的:(java)