示例 1:使用 StringBuffer 的 delete() 方法清除的 Java 程序
class Main {
public static void main(String[] args) {
// create a string buffer
StringBuffer str = new StringBuffer();
// add string to string buffer
str.append("Java");
str.append(" is");
str.append(" popular.");
System.out.println("StringBuffer: " + str);
// clear the string
// using delete()
str.delete(0, str.length());
System.out.println("Updated StringBuffer: " + str);
}
}
输出
StringBuffer: Java is popular. Updated StringBuffer:
在上面的示例中,我们使用了 StringBuffer
类的 delete()
方法来清除字符串缓冲区。
在这里,delete()
方法会删除指定索引范围内的所有字符。
示例 2:使用 setLength() 清除 StringBuffer
class Main {
public static void main(String[] args) {
// create a string buffer
StringBuffer str = new StringBuffer();
// add string to string buffer
str.append("Java");
str.append(" is");
str.append(" awesome.");
System.out.println("StringBuffer: " + str);
// clear the string
// using setLength()
str.setLength(0);
System.out.println("Updated StringBuffer: " + str);
}
}
输出
StringBuffer: Java is awesome. Updated StringBuffer
在这里,setLength()
方法将 StringBuffer
中的字符序列更改为新的字符序列。并将新字符序列的长度设置为 0。
因此,旧的字符序列会被垃圾回收。
注意:setLength()
方法会完全忽略字符串缓冲区中存在的字符序列。但是,delete()
方法会访问字符序列并删除它。因此,setLength()
比 delete()
快。
示例 3:通过创建新对象来清除 StringBuffer
class Main {
public static void main(String[] args) {
// create a string buffer
StringBuffer str = new StringBuffer();
// add string to string buffer
str.append("Java");
str.append(" is");
str.append(" awesome.");
System.out.println("StringBuffer: " + str);
// clear the string
// using new
// here new object is created and assigned to str
str = new StringBuffer();
System.out.println("Updated StringBuffer: " + str);
}
}
输出
StringBuffer: Java is awesome. Updated StringBuffer:
在这里,new StringBuffer()
创建了一个新的字符串缓冲区对象,并将先前的 变量 赋值给新对象。在这种情况下,先前的 对象 仍然存在。但它将无法访问,因此会被垃圾回收。
由于每次都不是清除先前的字符串缓冲区,而是创建了一个新的字符串缓冲区。因此,在性能方面效率较低。