在开发程序的时候,经常使用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对象中的内容效率最高。
分享到:
相关推荐
7. **比较内容**:可以使用 `equals()` 方法来比较两个 `StringBuffer` 对象的内容是否相同。 ```java boolean isEqual = sb1.equals(sb2); ``` #### 四、示例代码分析 ```java StringBuffer sb1 = new ...
StringBuffer StringBuffer 是 Java 中的一个类,用于高效地操作字符串,它可以避免频繁修改字符串导致的性能问题。下面是 StringBuffer 的相关知识点: 关键技术点 1. indexOf 和 lastIndexOf 方法:用于查找...
**StringBuffer**:`StringBuffer`类同样用于表示字符序列,但它提供了一种可以修改内容的方式。相比于`String`,`StringBuffer`支持对其内部字符序列进行添加、删除或替换等操作,且这些操作不会产生新的对象,而是...
String、StringBuffer和StringBuilder的比较 通过上面的分析,我们可以看到,String类的字符串是不可变的,而StringBuffer和StringBuilder类的字符串可以被修改。StringBuffer类是线程安全的,而StringBuilder类...
在字符串连接操作中,StringBuffer 的效率要比 String 高。例如,String str = new String("welcome to ");str += "here";的处理步骤实际上是通过建立一个 StringBuffer,让它调用 append(),最后再将 StringBuffer ...
- 使用`==`比较两个字符串变量是否指向同一个内存地址,而不是比较内容。 - 使用`equals()`方法来比较两个字符串的内容是否相等。 示例: ```java String s1 = "hello"; String s2 = "hello"; String s3 = new ...
另外,StringBuffer 是线程安全的,在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。 初始化 StringBuffer 对象可以使用构造方法,例如:StringBuffer s = new StringBuffer();...
JVM会优化这种连续的字符串拼接,将它们合并为一个操作,因此在这种特定情况下,String的效率较高。 相比之下,`StringBuilder`和`StringBuffer`是可变的字符序列,它们允许在原有对象基础上进行修改,而不创建新...
在Java编程语言中,`StringBuffer`类是一个非常重要的工具,尤其在处理字符串连接操作时。相较于`String`类,`StringBuffer`提供了线程安全的动态字符串构建,避免了频繁创建新对象带来的性能开销。本文将深入探讨`...
在上述代码示例中,我们比较了使用`String`和`StringBuffer`进行5000次字符串拼接操作的时间消耗。当使用`String`时,每次循环都会生成新的`String`对象,导致总时间达到46687毫秒。而使用`StringBuffer`,由于其...
- **StringBuffer**:因为每次修改操作都需要同步,所以相对于 StringBuilder 来说效率较低。 - **String**:在进行字符串拼接时会产生多个 String 对象,如果频繁进行这样的操作,将会消耗大量的内存资源。 #### ...
与`String`类不同,`StringBuffer`是可变的(mutable),这意味着它的内容可以在创建后进行修改,而无需创建新的对象。这种特性使得在处理大量字符串操作时,`StringBuffer`比`String`更高效,因为它避免了不必要的...
stringbuilder用法 String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String...
如果比较的是不同内容的`String`对象,`==`将返回`false`,除非使用`equals`方法进行内容比较。 总结来说,选择`String`还是`StringBuffer`(或`StringBuilder`)取决于具体的需求。如果字符串操作较少或者在单线程...
StringBuffer练习.doc
为了进一步理解二者的差异,我们可以通过String和StringBuffer的内存使用和操作性能来进行比较。String类由于每次修改都会创建新的对象,所以如果进行大量字符串操作,就会造成内存的大量消耗。而StringBuffer在内存...
这个工具可能允许程序员方便地构建和操作SQL语句,尤其是在需要动态构造复杂SQL的情况下,`StringBuffer`的使用可以提高效率和性能。 总的来说,这个主题涵盖了从软件执行到数据库操作的关键技术,包括Windows的....
这种设计使得`String`对象非常适用于作为键(key)在哈希表(如`HashMap`)中使用,因为不变性保证了哈希码的稳定,有利于提高查找效率。此外,由于`String`对象是不可变的,多个线程可以安全地共享同一个`String`...