1. Змінення рядків
Рядки в Java — це незмінювані об'єкти (immutable). Так зробили для того, щоб клас-рядок можна було оптимізувати й використовувати повсюдно. Наприклад, в колекції HashMap рекомендується використовувати як ключі тільки об'єкти незмінюваних типів.
Проте часто виникають ситуації, коли програмісту було б зручніше мати 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.