示例1:使用delete()使用StringBuffer清除的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()
创建一个新的字符串缓冲区对象,并将先前的变量分配给新对象。在这种情况下,先前的对象将在那里。但是它将无法访问,因此将被垃圾回收。
因为每次都不清除先前的字符串缓冲区,而是创建了一个新的字符串缓冲区。因此,在性能方面效率较低。