`

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

分享到:
评论

相关推荐

    js实现StringBuffer的简单实例

    在处理大量字符串拼接时,使用自定义的`StringBuffer`类可以显著提高效率,因为它避免了JavaScript字符串不可变性带来的性能开销。这个简单的实现可以作为一个基础,根据实际需求进行扩展,例如添加更多的方法,或者...

    JAVA精华.docJAVA精华.doc

    这与StringBuffer类形成对比,StringBuffer是可变的,允许在已存在的字符串基础上进行添加、删除或替换操作,通常在需要多次修改字符串内容时使用,以提高效率。StringBuffer有一个重要的方法`toString()`,它将...

    第4 - 5章作业1

    在本作业中,我们主要关注Java编程语言中的字符串操作,包括基本的字符串比较、方法调用...在实际编程中,`StringBuffer` 或 `StringBuilder` 类通常用于效率较高的字符串操作,特别是在循环或多次修改字符串内容时。

    java - 实用技巧

    此外,`Vector` 还提供了 `removeAllElements()` 方法来清空整个列表,这对于批量删除元素非常有用。 示例代码: ```java v.removeAllElements(); ``` **2.3 性能优化** 为了提高性能,建议在初始化 `Vector` 时...

    2021-2022计算机二级等级考试试题及答案No.18447.docx

    26. String和StringBuffer都是Java中用来处理字符串的类,String是不可变的,而StringBuffer是可变的,适合在多线程环境下进行字符串拼接。 以上是对题目涉及知识点的详细解析,涵盖了数据库操作、编程语言特性、...

    String的一些用法1

    2. **`equals()`方法**:用于比较两个字符串的实际内容是否相等,即它们包含的字符序列是否完全一致。 - 示例: ```java String str1 = "hello"; String str2 = "hello"; String str3 = new String("hello"); ...

    Android设备获取扫码枪扫描的内容与可能遇到的问题解决

    在Android平台上,使用扫码枪与设备进行交互是一个常见的需求,特别是在物流、仓储、零售等领域。本文将详细介绍如何在Android设备上获取扫码枪扫描的内容,并...这不仅可以提高工作效率,还可以提供更好的用户体验。

    java数据流

    2. 操作`StringBuffer`:创建一个`StringBuffer`对象,使用`append()`方法添加字符串,`setLength(0)`清空,`delete()`方法删除特定部分。 3. 键盘输入:使用`Scanner`类从`System.in`获取用户输入,判断输入是否为...

    第3讲 计算器.docx

    `StringBuffer`是线程安全的字符串操作类,适合在多线程环境下使用,而在单线程的Android应用中,更常见的可能是使用`StringBuilder`,因为它没有线程安全的开销,效率更高。在这里,它们用于累积用户输入的数字,...

    1222-张国旗-JAVA陷阱.rar

    使用StringBuilder或StringBuffer(多线程环境下)进行字符串拼接可以提高效率。 6. **equals()与==的区别**:在Java中,==比较的是对象的引用,而equals()方法比较的是对象的内容。自定义类时,应重写equals()以...

    Java常用类String的面试题汇总(java面试题)

    而equals()方法是比较两个字符串的内容是否相等。基本数据类型可以直接使用“==”进行比较,但对于String这样的引用类型,应当使用equals()方法。例如,String str1 = "Hello"; String str2 = "Hello"; 虽然str1和...

    java performance2

    当我们调用`Timer.cancel()`方法时,会通过同步块锁定`queue`,然后设置`thread.newTasksMayBeScheduled`为`false`,表示不允许再添加新的任务,并清空队列,最后唤醒等待线程。这一系列操作确保了任务队列的正确...

    ThreadPool UML图

    例如,代码中提到的`StringBuffer`类,它似乎用于维护字符串数据结构,并提供了一系列操作字符串的方法,比如`append`方法用于追加数据,`clear`用于清空数据等。这与线程池中任务队列管理的功能有些类似,即线程池...

    JAVA面试题

    5. **J2SDK拙劣框架**:这可能因个人喜好和具体需求而异,但一些可能的评价可能是`Vector`线程安全但效率低,`StringBuffer`的同步操作在多线程环境下并非始终必要,导致性能下降。 6. **Java学习资源**:开发者常...

    LZW_JAVA-and-cPP.rar_lzw_lzw java_lzw_java

    在Java和C++中,这可以通过使用StringBuilder或StringBuffer(Java)或std::string(C++)对象来实现。 3. **查找字符串**: 检查当前字符串是否在字典中。如果存在,将其编码发送到输出,然后将未编码的下一个...

    中文分词技术及其实现.pdf

    ### 中文分词技术及其实现 #### 摘要 随着互联网的快速发展和个人化信息需求的日益增长,网络信息...通过这些方法和技术的应用,可以有效地提高中文信息处理的质量和效率,为后续的自然语言处理任务提供坚实的基础。

    (超赞)JAVA精华之--深入JAVA API

    - `equalsIgnoreCase`: 忽略大小写的字符串比较。 - `indexOf`: 查找字符或子字符串首次出现的位置。 - `substring`: 获取字符串的子串,支持指定起始和结束索引。 - **基本数据类型包装类** - 如 `Integer`、`...

    java读取大文件大全

    StringBuffer strBuf = new StringBuffer(""); while (fcin.read(rBuffer) != -1) { int rSize = rBuffer.position(); rBuffer.rewind(); rBuffer.get(bs); rBuffer.clear(); String tempString = new ...

    java内存泄露相关资料

    为了避免这种情况,开发者应当在不再需要这些对象时,从静态集合中移除它们或者清空整个集合。 监听器也是内存泄露的常见原因。当添加监听器到组件上时,如果没有在不再使用时移除,这些监听器会保持对对象的引用,...

    JAVA垃圾回收机制与内存泄露问题实用.pdf

    - **复制(Copying)**:将内存分为两块,每次只使用一块,当一块满时,将存活对象复制到另一块,然后清空原块。 - **标记-压缩(Mark-Compact)**:标记存活对象,然后将它们移动到内存的一端,清除其余空间。 -...

Global site tag (gtag.js) - Google Analytics