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.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ