— Привіт, Аміго!
— Адже вже віталися, Білаабо.
— Так? Але мені все одно приємно починати кожен урок із цієї фрази.
Сьогодні ми щільно займемося класом String.
— То я там уже все знаю. Навіть те, що String – immutable.
— У класу String 46 методів, скільки з них ти знаєш?
— Не більше десяти. Навіть, напевно, максимум 5 штук.
— Тоді слухай.
Розробники Java помітили, що здебільшого рядки всередині програм існують у незмінному вигляді, але іноді їх таки змінюють. Дуже неприємно, коли ви створили рядок, зберегли в нього щось важливе, передали в чужий метод, а він його змінив. Щоб такого не відбувалося, розробники вирішили створити два види рядків – змінний і незмінний.
— Клас String став відповідати за незмінний рядок, а клас StringBuilder – за змінний. Об'єкти цих класів легко перетворюються один на одного. У більшості випадків розробникам програм на Java досить просто String, що показує, що проектувальники Java мали рацію.
— Тобто. якщо мені потрібний рядок – я створюю клас String, а якщо потрібний рядок, що змінюється, то клас StringBuilder?
— Так. Насправді є ще клас StringBuffer – це копія StringBuilder, але всі методи якого оголошені synchronized, щоб до об'єкта можна було звертатися з різних ниток програми.
— А як такий приклад? Хіба тут рядок не змінюється?
String s = "cat";
s = s + "-" + s;
— Ні. Тут є два об'єкти String: "cat" і "cat-cat". Другий створюється з урахуванням першого, але об'єкт не змінюється. Насправді тут ще цікавіше. Ось який код згенерує компілятор, коли компілюватиме твій приклад:
String s = "cat";
StringBuilder s2 = новий StringBuilder(s);
s2.append("-");
s2.append(s);
s = s2.toString();
Тобто. Для створення нового рядка практично завжди використовується StringBuilder, просто іноді всю роботу за тебе робить компілятор. Але ж твій варіант простіший, хіба ні?
— Так, класно, що в Java такий сучасний компілятор.
— А тепер пройдемося за методами класу String:
1) Як дізнатися довжину рядка?
Метод length повертає довжину рядка – кількість символів.
Метод(и) | Приклад(и) |
---|---|
|
|
|
2) Як отримати символ з рядка?
Метод charAt повертає символ рядка за його номером. Нумерація символів починається з 0.
Метод(и) | Приклад(и) |
---|---|
|
|
|
3) Як отримати символи з рядка?
Метод toCharArray повертає масив усіх символів рядка.
Метод(и) | Приклад(и) |
---|---|
|
|
4) Як порівняти рядки?
Метод equals перевіряє, чи збігаються рядки, а метод equalsIgnoreCase — чи збігаються рядки, ігноруючи регістр літер.
Метод(и) | Приклад(и) |
---|---|
|
|
|
|
5) Як перетворити всі літери на рядок у великі чи маленькі?
Метод toUpperCase повертає копію рядка, всі символи якого – великі.
Метод toLowerCase повертає копію рядка, всі символи якого є маленькими.
Метод(и) | Приклад(и) |
---|---|
|
|
Результат:
|
|
|
|
Результат:
|
6) Як забрати прогалини на початку та в кінці рядка?
Метод trim повертає копію рядка, без «порожніх» символів на початку та наприкінці.
Метод(и) | Приклад(и) |
---|---|
|
|
Результат:
|
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ