1. Будова класу String
Сьогодні розмова піде про клас String. Клас String — найпопулярніший клас у Java після типу int. Він використовується скрізь і має купу корисних методів, які варто знати.
Клас String — це єдиний клас, крім примітивних типів, літерали якого можна використовувати в операторах switch; компілятор в особливий спосіб обробляє додавання рядків і об'єктів; об'єкти String в особливий спосіб зберігаються в пам'яті. Клас String — дійсно особливий клас.
Крім того, клас String має купу класів-сателітів, які спрощують роботу з рядками в Java. Коли ви все це вивчите, ви зможете легко робити багато речей. Ну а почнемо ми з найголовнішого — з будови класу String.
Масив символів
Клас String насправді влаштований дуже просто: він містить масив символів (char), де зберігаються всі символи рядка. Отак, наприклад, зберігається слово «Привіт»:
Насправді все так, але трохи не так. Оскільки клас String дуже важливий, у ньому використовується дуже багато оптимізацій, і дані в ньому зберігаються не у вигляді масиву символів, а просто у вигляді масиву байтів.
2. Методи класу String
Клас String має дуже багато методів: самих лише конструкторів 18 штук! Тому ми наведемо тільки найважливіші методи.
| Методи | Опис |
|---|---|
|
Повертає кількість символів у рядку |
|
Перевіряє, чи рядок є порожнім |
|
Перевіряє, чи рядок містить тільки пробіли або керівні символи (tab, enter тощо) |
|
Повертає символ, який знаходиться в рядку на позиці з номером index |
|
Повертає масив символів (копію), з яких складається рядок |
|
Перетворює рядок на набір байтів і повертає масив байтів |
|
Розділяє рядок на кілька підрядків |
|
Склеює в один рядок кілька підрядків |
|
Поміщає рядок у пул StringPool |
Докладну інформацію про конструктори див. у статті «Навіщо потрібен конструктор?»
Спробуймо написати програму, що перетворює шлях до файлу у форматі ОС Unix на формат, який використовується в ОС Windows. В ОС Unix роздільником директорій є символ /, а в ОС Windows — символ \.
Спосіб 1 — використання масиву символів (char)
| Код | Примітки |
|---|---|
|
Створення об'єкта Scanner Читання рядка з консолі Перетворення рядка на масив символів Цикл по символах Якщо символ дорівнює /,замінити його на \. Не забуваємо про екранування.Створюємо новий рядок на основі масиву символів. Виводимо рядок на екран. |
Спосіб 2 — використання методів split() і join():
| Код | Примітки |
|---|---|
|
Створення об'єкта Scanner Читання рядка з консолі Перетворення рядка на масив рядків. Як роздільник використовується символ / (дві додаткові скісні риски — це результат подвійного екранування).Об'єднуємо всі рядки з масиву рядків; як роздільник використовується символ \ (ми бачимо його екранованим).Виводимо рядок на екран. |
Спосіб 3 — використання методу replace(char oldChar, char newChar):
| Код | Примітки |
|---|---|
|
Створення об'єкта Scanner Читання рядка з консолі Просто замінюємо один символ на другий (другий символ екрановано) Виводимо рядок на екран. |
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ