跳到主要内容

Java 程序:清除 StringBuffer

示例 1:使用 StringBuffer 的 delete() 方法清除字符串

class Main {
public static void main(String[] args) {

// 创建一个字符串缓冲区
StringBuffer str = new StringBuffer();

// 向字符串缓冲区添加字符串
str.append("Java");
str.append(" 是");
str.append(" 受欢迎的。");
System.out.println("StringBuffer: " + str);

// 清除字符串
// 使用 delete()
str.delete(0, str.length());
System.out.println("更新后的 StringBuffer: " + str);
}
}

输出

StringBuffer: Java 是受欢迎的。
更新后的 StringBuffer:

在上面的示例中,我们使用了 StringBuffer 类的 delete() 方法来清除字符串缓冲区。

这里,delete() 方法删除了指定索引号内的所有字符。

示例 2:使用 setLength() 清除 StringBuffer

class Main {
public static void main(String[] args) {

// 创建一个字符串缓冲区
StringBuffer str = new StringBuffer();

// 向字符串缓冲区添加字符串
str.append("Java");
str.append(" 是");
str.append(" 很棒的。");
System.out.println("StringBuffer: " + str);

// 清除字符串
// 使用 setLength()
str.setLength(0);
System.out.println("更新后的 StringBuffer: " + str);
}
}

输出

StringBuffer: Java 是很棒的。
更新后的 StringBuffer:

这里,setLength() 方法改变了 StringBuffer 中存在的字符序列为新的字符序列,并将新字符序列的长度设置为 0。

因此,旧的字符序列将被垃圾收集。

注意setLength() 方法完全忽略了字符串缓冲区中存在的字符序列。然而,delete() 方法会访问字符序列并删除它。因此,setLength()delete() 更快。

示例 3:通过创建新对象清除 StringBuffer

class Main {
public static void main(String[] args) {

// 创建一个字符串缓冲区
StringBuffer str = new StringBuffer();

// 向字符串缓冲区添加字符串
str.append("Java");
str.append(" 是");
str.append(" 很棒的。");
System.out.println("StringBuffer: " + str);

// 清除字符串
// 使用 new
// 这里创建了一个新对象并赋值给 str
str = new StringBuffer();
System.out.println("更新后的 StringBuffer: " + str);
}
}

输出

StringBuffer: Java 是很棒的。
更新后的 StringBuffer:

在这里,new StringBuffer() 创建了一个新的字符串缓冲区对象,并将之前的变量指向新对象。在这种情况下,之前的对象仍然存在,但它将无法访问,所以会被垃圾收集。

由于每次都是创建新的字符串缓冲区而不是清除之前的字符串缓冲区,所以在性能方面它是不够高效的。