StringBuffer内容清空效率比较

以下内容转自:http://blog.csdn.net/l2tp1012/article/details/37975831

转载自:http://blog.sina.com.cn/s/blog_56fd58ab0100qfcz.html

 

在开发程序的时候,经常使用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、delete(int start, int end)
          移除此序列的子字符串中的字符

2、setLength(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对象中的内容效率最高。其次是重新new一个,最后是使用delete方法。

 

posted on 2017-06-11 14:32  傻瓜乐园  阅读(109)  评论(0编辑  收藏  举报

导航