1. Изменения строк
Строки в Java — это неизменяемые объекты (immutable). Так было сделано для того, чтобы класс-строку можно было сильно оптимизировать и использовать повсеместно. Например, в качестве ключей у коллекции HashMap рекомендуется использовать только immutable-типы.
Однако часто возникают ситуации, когда программисту все же было бы удобнее иметь String-класс, который можно менять. Который не создает новую подстроку при каждом вызове его метода.
Например, у нас есть очень большая строка и мы часто дописываем что-то в ее конец. В этом случае даже коллекция символов (ArrayList<Character>) может быть эффективнее, чем постоянное пересоздание строк и конкатенации объектов типа String.
Именно поэтому в язык Java все же добавили тип String, который можно менять. Называется он StringBuilder.
Создание объекта
Чтобы создать объект StringBuilder на основе существующей строки, нужно выполнить команду вида:
StringBuilder имя = new StringBuilder(строка);
Чтобы создать пустую изменяемую строку, нужно воспользоваться командой вида:
StringBuilder имя = new StringBuilder();
Список методов
Класс StringBuilder имеет два десятка полезных методов, вот самые важные из них:
| Метод | Описание |
|---|---|
|
Преобразовывает переданный объект в строку и добавляет к текущей строке |
|
Преобразовывает переданный объект в строку и вставляет в текущую строку |
|
Заменяет часть строки, заданную интервалом start..end на переданную строку |
|
Удаляет из строки символ под номером index |
|
Удаляет из строки символы, заданные интервалом |
|
Ищет подстроку в текущей строке |
|
Ищет подстроку в текущей строке с конца |
|
Возвращает символ строки по его индексу |
|
Возвращает подстроку, заданную интервалом |
|
Разворачивает строку задом наперед. |
|
Изменяет символ строки, заданный индексом на переданный |
|
Возвращает длину строки в символах |
Вот краткое описание каждого метода
2. Краткое описание методов
Добавление к строке
Чтобы что-то добавить к изменяемой строке (StringBuilder), нужно воспользоваться методом append(). Пример:
| Код | Описание |
|---|---|
|
|
Преобразование к стандартной строке
Чтобы преобразовать объект StringBuilder к строке типа String, нужно просто вызвать у него метод toString(). Пример
| Код | Вывод на экран |
|---|---|
|
|
Как удалить символ?
Чтобы удалить символ в изменяемой строке, вам нужно воспользоваться методом deleteCharAt(). Пример:
| Код | Вывод на экран |
|---|---|
|
|
Как заменить часть строки на другую?
Для этого есть метод replace(int begin, int end, String str). Пример:
| Код | Вывод на экран |
|---|---|
|
|
3. Полезные примеры работы со строками
Как развернуть строку задом наперед?
Для этой операции есть специальный метод — reverse(); Пример:
| Код | Вывод на экран |
|---|---|
|
|
Класс StringBuffer
Есть еще один класс — StringBuffer — это аналог класса StringBuilder, только его методы имеют модификатор synchronized. А это значит, что к объекту StringBuffer можно одновременно обращаться из нескольких потоков.
Зато он работает гораздо медленнее, чем StringBuilder. Такой класс может вам понадобиться, когда вы начнете активно изучать многопоточность в квесте Java Multithreading.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ