清除 StringBuffer 的 Java 程序

要理解此示例,您应该具备以下 Java 编程的知识:

示例 1:Java 程序使用 delete() 使用 StringBuffer 进行清除

public 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

public 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 isawesome.
Updated StringBuffer:

这里, setLength() 方法将 StringBuffer 的长度设置为 0。也即是清空了 StringBuffer 中的内容。

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

注意:该 setLength() 方法完全忽略字符串缓冲区中存在的字符序列。但是,该 delete() 方法访问字符序列并将其删除。因此, setLength() 比更快 delete()

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

public 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() 创建一个新的字符串缓冲区对象并将其分配给变量 str。在这种情况下,变量 str 以前指向的对象仍在那里。但它将无法访问,因此它将被垃圾收集。

这种方法将创建新的对象,因此效率比较低。