📜  Java程序清除StringBuffer

📅  最后修改于: 2020-09-26 18:00:44             🧑  作者: Mango

在此示例中,我们将学习使用delete()和setLength()方法清除字符串缓冲区,并在Java中创建一个新的StringBuffer对象。

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

因为每次都不清除先前的字符串缓冲区,而是创建了一个新的字符串缓冲区。因此,在性能方面效率较低。