Шаг 84.
Язык программирования Java.
Классы StringBuilder и StringBuffer

На этом шаге мы рассмотрим классы StringBuilder и StringBuffer

Классы StringBuilder и StringBuffer расположены в пакете java.lang. Класс StringBuffer содержит те же функции что и класс StringBuilder. Отличие его от класса StringBuilder в том, что у него все методы помечены ключевым словом synchronized (про это ключевое слово мы поговорим, когда будем изучать многопоточность в Java). Поэтому достаточно рассмотреть класс StringBuilder.

Объекты класса StringBuilder являются mutable в отличии от класса String.

Создать объект типа StringBuilder можно несколькими способами. Для этого есть следующие конструкторы:

  1. StringBuilder() - Конструктор по умолчанию. Конструируется для пустой строки.
  2. StringBuilder(String str) - Будет содержать переданную строку. Если str будет равен null, то будет брошено исключение NullPointerException (здесь и далее NPE).

Для работы со строками в классе StringBuilder есть целый набор функций. В таблице 1 приведены только некоторые из них.

Таблица 1. Функции класса StringBuilder
Функция Описание
StringBuilder append(String str) Добавляет в конец заданную строку.
String toString() Функция для преобразования StringBuilder в String.
StringBuilder delete(int start, int end) Функция для удаления подстроки, которая начинается с позиции start и заканчивается в позиции end - 1.
StringBuilder deleteCharAt(int index) Функция для удаления одного символа по заданной позиции.
StringBuilder replace(int start, int end, String str) Функция для замены подстроки из диапазона [start; end - 1] на строку str.
StringBuilder reverse() Функция для смены порядка следования символов на обратный.
StringBuilder insert(int offset, String str) Функция вставки в заданную позицию строки str.


Для лучшего понимания как работать с классом StringBuilder обратитесь к примеру ниже.


/**
 * Пример использования класса StringBuilder
 * */
public class Main {
    public static void main(String[] args) {
        String s = "test";

        /*Формируем объект stringBuilder по строке s*/
        StringBuilder stringBuilder = new StringBuilder(s);

        /*
          Эта строчка равносильна следующей стороке:
          System.out.println("Конструирование объекта: " + stringBuilder.toString());
        */
        System.out.println("Конструирование объекта: " + stringBuilder);

        /*Добавляем в конец строку и выводим результат*/
        stringBuilder.append(" abacaba");
        System.out.println("Применение функции append: " + stringBuilder);

        /*Удаляем с 1 по 2 символы и выводим результат*/
        stringBuilder.delete(1, 3);
        System.out.println("Применение функции delete: " + stringBuilder);

        /*Удаляем 7 символ и выводим результат*/
        stringBuilder.deleteCharAt(7);
        System.out.println("Применение функции deleteCharAt: " + stringBuilder);

        /*Заменяем подстроку tt на строку test и выводим результат*/
        stringBuilder.replace(0, 2, "test");
        System.out.println("Применение функции replace: " + stringBuilder);

        /*Вставляем в 9 позицию символ a и выводим результат*/
        stringBuilder.insert(9, "a");
        System.out.println("Применение функции insert: " + stringBuilder);

        /*Переворачиваем строку и выводим результат*/
        stringBuilder.reverse();
        System.out.println("Применение функции reverse: " + stringBuilder);
    }
}

Проект можно взять здесь


Рис. 1. Вывод программы


На следующем шаге мы рассмотрим класс StringTokenizer

Предыдущий шаг Содержание Следующий шаг