В Java, рядки відіграють важливу роль, оскільки є одним з найбільш поширених типів даних для обробки тексту. Ось спрощене пояснення класів, що працюють з рядками в Java.
1. String
String в Java представляє собою послідовність символів, таких як слова або речення.
- Незмінність:
Рядки є незмінними, тобто після їх створення значення не можна змінити. Якщо ви модифікуєте рядок, створюється новий об'єкт. - Пул рядків для оптимізації:
Рядки, створені за допомогою літералів, зберігаються в спеціальній ділянці пам'яті, яка називається String Pool (Пул рядків). Це дозволяє економити пам'ять, повторно використовуючи однакові рядки. - Використання: Найкраще підходить для невеликого або незмінного тексту.
Приклад:
String s = “Hello”;
s = s + “ World”;
StringBuilder
Клас StringBuilder є гнучким і ефективним альтернативним засобом для обробки рядків, коли потрібні часті зміни.
- Змінний: На відміну від String, ви можете змінювати об'єкт StringBuilder без створення нового.
- Продуктивність: Швидший за StringBuffer, оскільки не є потокобезпечним (не підтримує роботу з кількома потоками).
- Використання: Ідеальний для однониткових додатків, де потрібно часто додавати, вставляти або видаляти символи.
Приклад:
StringBuilder sb = new StringBuilder(“Hello”);
sb.append(“ World”);
StringBuffer
Клас StringBuffer схожий на StringBuilder, але додає потокобезпечність для використання в багатопотокових середовищах.
- Потокобезпечний: Забезпечує синхронізацію операцій з рядками, що робить їх безпечними для одночасного доступу кількох потоків.
- Продуктивність: Повільніший за StringBuilder через накладні витрати на синхронізацію.
- Використання: Корисний у багатопотокових додатках, де необхідна безпечна маніпуляція рядками.
Приклад:
StringBuffer sb = new StringBuffer(“Hello”);
sb.append(“ World”);
StringTokenizer
Клас StringTokenizer використовується для розбиття рядків на менші частини (токени) на основі роздільників, таких як пробіли або коми.
- Застарілий: Хоча він все ще доступний, його вважають менш сучасним порівняно з String.split().
- Простий: Добре підходить для базового токенізування, але не має розширених можливостей регулярних виразів.
- Використання: Використовується в старих (наследованих) Java додатках.
Приклад:
StringTokenizer st = new StringTokenizer(“Hello, World”, “,”);
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
Коли використовувати кожен клас:
- String: Використовуйте для сталого або рідко змінюваного тексту.
- StringBuilder: Використовуйте в однопотокових сценаріях, де необхідні часті зміни.
- StringBuffer: Використовуйте в багатопотокових сценаріях для операцій з рядками.
- StringTokenizer: Рідко використовується, але корисний у старих додатках для простого токенізування.
Перекладено з: Java Strings: A Simple Guide