Очистка StringBuffer в Java — методы delete и setLength

В этой программе мы научимся очищать StringBuffer тремя разными способами.

Пример 1: очистка StringBuffer с помощью delete()

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:

В примере выше мы использовали метод delete() класса StringBuffer, чтобы очистить строковый буфер.

Здесь delete() удаляет все символы между указанными индексами.


Пример 2: очистка StringBuffer с помощью setLength()

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() создаёт новый объект строкового буфера и присваивает его переменной str. Прежний объект ещё существует, но к нему больше нельзя обратиться, поэтому он будет собран сборщиком мусора.

Поскольку каждый раз вместо очистки старого буфера создаётся новый, этот способ менее эффективен по производительности.