`
小网客
  • 浏览: 1249342 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

StringBuffer和StringBuilder的清空操作

    博客分类:
  • Java
 
阅读更多

Collection和Map都有相应的clear操作,但是StringBuffer和StringBuilder没有,那么如何复用呢?

观察api我们知道有两种方式:

StringBuffer sb=new StringBuffer();
sb.setLength(0);
sb.delete(0, sb.length());

我们观察下他们的区别:

他们的实现都是在AbstractStringBuilder里进行的,详情如下:

setLength:

public void setLength(int newLength) {
	if (newLength < 0)
	    throw new StringIndexOutOfBoundsException(newLength);
	if (newLength > value.length)
	    expandCapacity(newLength);

	if (count < newLength) {
	    for (; count < newLength; count++)
		value[count] = '\0';
	} else {
	    count = newLength;
	}
}

delete:

public AbstractStringBuilder delete(int start, int end) {
	if (start < 0)
	    throw new StringIndexOutOfBoundsException(start);
	if (end > count)
	    end = count;
	if (start > end)
	    throw new StringIndexOutOfBoundsException();
	int len = end - start;
	if (len > 0) {
	    System.arraycopy(value, start+len, value, start, count-end);
	    count -= len;
	}
	return this;
}

我们发现setLength没有执行cp操作,只能重置count,因此性能相对高点。

 

1
8
分享到:
评论

相关推荐

    面试题java StringBuffer和StringBuilder类常见操作和用法

    总的来说,理解和熟练使用StringBuffer和StringBuilder类对于编写高效的Java代码至关重要,特别是在处理大量字符串操作或构建动态字符串时。根据实际需求选择合适的类,可以有效地优化程序性能。

    StringBuffer、StringBuilder、String

    在Java中,有几种不同的方式可以用来创建和修改字符串,其中最常用的是`String`、`StringBuffer`和`StringBuilder`。本文将详细介绍这三种类型的字符串及其区别,特别是`StringBuffer`和`StringBuilder`之间的差异。...

    JAVA精华 String类一旦初始化就不可以改变,而stringbuffer则可以。它用于封装内容可变的字符串。

    在处理大量字符串操作或需要避免不必要的对象创建时,选择使用StringBuffer或StringBuilder(Java 5及更高版本中引入,线程不安全但更快)通常更为高效。同时,了解基本数据类型包装类的作用,有助于在需要对象的...

    JAVA SE基础学习资料

    这是因为字符串连接操作在Java中是通过StringBuffer或StringBuilder类来优化性能的。如果你需要频繁修改字符串内容,应该使用StringBuffer或StringBuilder,而不是String。 StringBuffer与String相比,主要优点在于...

    第7章 常用类.pdf

    它是一个工具类,提供了一些静态方法用于访问系统相关的资源和操作,例如获取当前时间、清空缓冲区、加载动态库等。System类还允许进行标准输入输出流的重定向操作。 7. 对象内存分析 对象内存分析是理解Java内存...

    java实验十.docx

    以上就是使用`StringBuffer`类判断一个字符串是否为对称字符串以及使用`StringBuilder`类实现对一段文本中的单词进行统计、查找、替换及删除操作的相关知识点介绍及示例代码。希望这些内容能够帮助你更好地理解和...

    JAVA精华.docJAVA精华.doc

    在编译时,Java会优化这种连接,使用StringBuffer或StringBuilder来合并字符串,以避免创建不必要的中间字符串对象。因此,上述表达式实际上等同于使用`new StringBuffer().append("a").append(4).append("c")....

    java - 实用技巧

    需要注意的是,在 Java 5 之后引入了 `StringBuilder` 类,它与 `StringBuffer` 相似,但在非线程安全的环境下使用时性能更好,因为它不支持同步操作。因此,在大多数情况下,推荐使用 `StringBuilder`。 **1.3 ...

    第4 - 5章作业1

    而StringBuffer或StringBuilder类则提供了可变的字符串操作。 1. 对于题目中给出的String对象s1、s2和s3: - (1) s1 == s2 返回true,因为它们引用的是内存中的同一个字符串常量池中的对象。 - (2) s1 == s3 返回...

    java数据流

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

    第4 - 5章作业提交1

    在本作业中,我们主要关注Java编程语言中的字符串操作,...在实际编程中,根据需求选择合适的字符串操作方法可以提高性能,例如,对于频繁修改的字符串,`StringBuffer` 或 `StringBuilder` 通常比 `String` 更合适。

    java内存泄露相关资料

    2. 避免频繁使用String,而是使用可变的StringBuffer或StringBuilder,减少不必要的对象创建。 3. 减少静态变量的使用,因为它们的生命周期长,GC不会回收。 4. 避免短时间内大量创建对象,特别是大对象,这可能使...

    课程设计《计算器》(用java编写)

    在Java中,我们可以使用StringBuilder或StringBuffer类来构建和修改用户输入的数字字符串。对于加减乘除等基本运算,我们可以直接使用Java内置的算术运算符。对于更复杂的运算,如括号内的表达式,可能需要实现递归...

    用java编写简单记事本

    - 复制、粘贴和剪切功能可以利用`StringBuffer`或`StringBuilder`类来实现。选定的文本可以存储在这些类的对象中,然后在需要的地方插入或替换。 - 对于复制,可以创建一个新的`StringBuffer`,将选中的文本添加到...

    java performance2

    - **字符串拼接**:在进行字符串拼接时,如果是在循环中拼接字符串,应该使用`StringBuilder`(JDK 1.5及以上版本)或`StringBuffer`(线程安全),而不是使用`+`操作符,因为后者会导致频繁的对象创建和垃圾回收。...

    第3讲 计算器.docx

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

    Android 简单代码实现的Android 计算器源码.zip源码资源下载

    可以使用StringBuilder或StringBuffer类来构建这个值。 - 运算符按钮则会保存当前的操作符,并可能清空输入值,准备接受下一个操作数。 - 清除按钮(C键)用于重置输入值和当前操作符。 - 等号按钮(=键)会执行...

    Java中String类(字符串操作)的10个常见问题和解决方法

    字符串比较主要涉及"=="和equals()两个操作符。"=="运算符用于比较两个引用是否指向内存中的同一个对象。而equals()方法用于比较字符串内容的相等性。在比较字符串时,除非要检查两个引用是否相同,否则推荐使用...

    java 图形界面简单计算器

    为了实现计算逻辑,`Calcu`类可能使用了`StringBuilder`或`StringBuffer`来构建计算表达式,使用`StringBuilder`的`append()`方法添加数字和运算符,然后通过`eval()`方法或者自定义的解析和计算逻辑来求解表达式。...

Global site tag (gtag.js) - Google Analytics