На этом шаге мы рассмотрим классы StringBuilder и StringBuffer
Классы StringBuilder и StringBuffer расположены в пакете java.lang. Класс StringBuffer содержит те же функции что и класс StringBuilder. Отличие его от класса StringBuilder в том, что у него все методы помечены ключевым словом synchronized (про это ключевое слово мы поговорим, когда будем изучать многопоточность в Java). Поэтому достаточно рассмотреть класс StringBuilder.
Объекты класса StringBuilder являются mutable в отличии от класса String.
Создать объект типа StringBuilder можно несколькими способами. Для этого есть следующие конструкторы:
Для работы со строками в классе StringBuilder есть целый набор функций. В таблице 1 приведены только некоторые из них.
Функция | Описание |
---|---|
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