`
仅此而已
  • 浏览: 61482 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

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、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对象中的内容效率最高。

分享到:
评论

相关推荐

    StringBuffer类的总结

    7. **比较内容**:可以使用 `equals()` 方法来比较两个 `StringBuffer` 对象的内容是否相同。 ```java boolean isEqual = sb1.equals(sb2); ``` #### 四、示例代码分析 ```java StringBuffer sb1 = new ...

    StringBuffer

    StringBuffer StringBuffer 是 Java 中的一个类,用于高效地操作字符串,它可以避免频繁修改字符串导致的性能问题。下面是 StringBuffer 的相关知识点: 关键技术点 1. indexOf 和 lastIndexOf 方法:用于查找...

    String&Stringbuffer

    **StringBuffer**:`StringBuffer`类同样用于表示字符序列,但它提供了一种可以修改内容的方式。相比于`String`,`StringBuffer`支持对其内部字符序列进行添加、删除或替换等操作,且这些操作不会产生新的对象,而是...

    String StringBuffer和StringBuilder区别之源码解析

    String、StringBuffer和StringBuilder的比较 通过上面的分析,我们可以看到,String类的字符串是不可变的,而StringBuffer和StringBuilder类的字符串可以被修改。StringBuffer类是线程安全的,而StringBuilder类...

    String ,StringBuffer与StringBuilder

    在字符串连接操作中,StringBuffer 的效率要比 String 高。例如,String str = new String("welcome to ");str += "here";的处理步骤实际上是通过建立一个 StringBuffer,让它调用 append(),最后再将 StringBuffer ...

    String和StringBuffer详细用法总结

    - 使用`==`比较两个字符串变量是否指向同一个内存地址,而不是比较内容。 - 使用`equals()`方法来比较两个字符串的内容是否相等。 示例: ```java String s1 = "hello"; String s2 = "hello"; String s3 = new ...

    java高级特性StringBuffer类.doc

    另外,StringBuffer 是线程安全的,在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。 初始化 StringBuffer 对象可以使用构造方法,例如:StringBuffer s = new StringBuffer();...

    String、StringBuilder和StringBuffer的区别

    JVM会优化这种连续的字符串拼接,将它们合并为一个操作,因此在这种特定情况下,String的效率较高。 相比之下,`StringBuilder`和`StringBuffer`是可变的字符序列,它们允许在原有对象基础上进行修改,而不创建新...

    Java语言中StringBuffer的用法

    在Java编程语言中,`StringBuffer`类是一个非常重要的工具,尤其在处理字符串连接操作时。相较于`String`类,`StringBuffer`提供了线程安全的动态字符串构建,避免了频繁创建新对象带来的性能开销。本文将深入探讨`...

    String和StringBuffer的区别

    在上述代码示例中,我们比较了使用`String`和`StringBuffer`进行5000次字符串拼接操作的时间消耗。当使用`String`时,每次循环都会生成新的`String`对象,导致总时间达到46687毫秒。而使用`StringBuffer`,由于其...

    StringBuffer和String_区别

    - **StringBuffer**:因为每次修改操作都需要同步,所以相对于 StringBuilder 来说效率较低。 - **String**:在进行字符串拼接时会产生多个 String 对象,如果频繁进行这样的操作,将会消耗大量的内存资源。 #### ...

    Java中StringBuffer对象的初始化.pdf

    与`String`类不同,`StringBuffer`是可变的(mutable),这意味着它的内容可以在创建后进行修改,而无需创建新的对象。这种特性使得在处理大量字符串操作时,`StringBuffer`比`String`更高效,因为它避免了不必要的...

    String、StringBuilder、StringBuffer 用法比较

    stringbuilder用法 String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String...

    string与stringbuffer的区别

    如果比较的是不同内容的`String`对象,`==`将返回`false`,除非使用`equals`方法进行内容比较。 总结来说,选择`String`还是`StringBuffer`(或`StringBuilder`)取决于具体的需求。如果字符串操作较少或者在单线程...

    StringBuffer练习.doc

    StringBuffer练习.doc

    String与StringBuffer区别详解

    为了进一步理解二者的差异,我们可以通过String和StringBuffer的内存使用和操作性能来进行比较。String类由于每次修改都会创建新的对象,所以如果进行大量字符串操作,就会造成内存的大量消耗。而StringBuffer在内存...

    打包工具exe Stringbuffer sql工具

    这个工具可能允许程序员方便地构建和操作SQL语句,尤其是在需要动态构造复杂SQL的情况下,`StringBuffer`的使用可以提高效率和性能。 总的来说,这个主题涵盖了从软件执行到数据库操作的关键技术,包括Windows的....

    String-StringBuffer-StringBuilder

    这种设计使得`String`对象非常适用于作为键(key)在哈希表(如`HashMap`)中使用,因为不变性保证了哈希码的稳定,有利于提高查找效率。此外,由于`String`对象是不可变的,多个线程可以安全地共享同一个`String`...

Global site tag (gtag.js) - Google Analytics