Робота зі String у Java 8

Об’єкт String є одним із найважливіших і найбільш використовуваних типів даних у мові програмування Java. Він представляє собою незмінний (immutable) об’єкт, який зберігає послідовність символів, та широко використовується для роботи з текстовою інформацією. У цій статті ми розглянемо основні особливості класу String, його методи та як ефективно працювати з текстом у Java.

У Java клас String використовується для зберігання й маніпуляції текстовими даними. Усі рядки у Java є об’єктами класу String, навіть якщо вони створені за допомогою літерального значення. Клас String знаходиться у пакеті java.lang, тому імпортувати його вручну не потрібно.

String text = "Привіт, світ!";
Java

Якщо ми створюємо рядок таким чином, він зберігається у спеціальному пулі рядків (String pool), що дозволяє економити пам’ять і зменшувати дублювання однакових рядків.

Особливості String у Java

Незмінність (Immutable)
Об’єкти класу String є незмінними. Це означає, що після створення об’єкта його вміст не може бути змінений. Будь-яка операція, яка “змінює” рядок (наприклад, додавання нових символів), насправді створює новий об’єкт String.

String text = "Hello";
text = text + " World"; // створюється новий об'єкт "Hello World"
Java

Пул рядків (String Pool)
У Java існує спеціальна область пам’яті, яка називається String Pool. Якщо створювати рядок за допомогою літералів, JVM перевіряє, чи існує вже такий рядок у пулі. Якщо так, то використовується існуючий об’єкт, а не створюється новий. Це підвищує ефективність використання ресурсів.

String str1 = "Hello";
String str2 = "Hello";
System.out.println(str1 == str2); // true (один і той самий об'єкт у пам'яті)
Java

Порівняння рядків
Через незмінність рядків, для порівняння їх значень слід використовувати метод equals(), а не оператор ==. Оператор == перевіряє, чи посилаються два об’єкти на одну і ту саму область пам’яті, тоді як equals() перевіряє рівність вмісту рядків.

String s1 = new String("Java");
String s2 = "Java";
System.out.println(s1 == s2); // false (різні об'єкти)
System.out.println(s1.equals(s2)); // true (однаковий вміст)
Java

Основні методи класу String

Клас String пропонує багато методів для роботи з рядками. Ось деякі з них:

Довжина рядка:
Метод length() повертає кількість символів у рядку.

    String str = "Java";
    System.out.println(str.length()); // 4
    Java

    Отримання символа за індексом:
    Метод charAt(int index) повертає символ за визначеним індексом.

    String str = "Hello";
    System.out.println(str.charAt(1)); // e
    Java

    Пошук:
    Метод contains() перевіряє, чи міститься певний підрядок у рядку.

    String str = "Java Programming";
    System.out.println(str.contains("Java")); // true
    Java

    Конкатенація рядків:
    Метод concat() використовується для об’єднання рядків.

    String str1 = "Hello";
    String str2 = "World";
    String result = str1.concat(" ").concat(str2);
    System.out.println(result); // Hello World
    Java

    Порівняння:
    Метод equals() перевіряє, чи мають два рядки однаковий вміст, а equalsIgnoreCase() ігнорує різницю між великими та малими літерами під час порівняння.

    String str1 = "java";
    String str2 = "Java";
    System.out.println(str1.equals(str2)); // false
    System.out.println(str1.equalsIgnoreCase(str2)); // true
    Java

    Пошук індексу:
    Методи indexOf() і lastIndexOf() знаходять перший або останній індекс появи символа або підрядка.

    String str = "Programming";
    System.out.println(str.indexOf("g")); // 3
    System.out.println(str.lastIndexOf("g")); // 9
    Java

    Обрізання пробілів:
    Метод trim() видаляє пробіли на початку і в кінці рядка.

    String str = "   Hello World   ";
    System.out.println(str.trim()); // "Hello World"
    Java

    Заміна символів:
    Метод replace() замінює всі входження певного символа або підрядка на інший.

    String str = "Hello, Java";
    System.out.println(str.replace("Java", "World")); // Hello, World
    Java

    Перетворення в нижній/верхній регістр:
    Методи toLowerCase() і toUpperCase() використовуються для зміни регістру символів.

    String str = "Java";
    System.out.println(str.toLowerCase()); // java
    System.out.println(str.toUpperCase()); // JAVA
    Java

    А тепер давайте подивимося на деякі операції які можна робити з об’єктом String.

    Рядки в Java можна створювати кількома способами:

    String s1 = "Привіт"; // Літеральний спосіб
    String s2 = new String("Світ"); // Через конструктор (подібний спосіб менш ефективний)
    
    char[] chars = {'H', 'e', 'l', 'l', 'o'};
    String s3 = new String(chars); // Через масив символів
    
    String emptyString = ""; // Порожній рядок
    Java

    Додавання (конкатенація) рядків можна зробити за допомогою оператора +, методу concat() або через StringBuilder/StringBuffer.

    Через оператор +

    String name = "Ольга";
    String message = "Привіт, " + name + "! Як твої справи?";
    System.out.println(message);
    // Виведе: Привіт, Ольга! Як твої справи?
    Java

    Через метод concat()

    String str1 = "Java ";
    String str2 = "8";
    String result = str1.concat(str2); // Результат: "Java 8"
    System.out.println(result);
    Java

    Через StringBuilder (ефективний спосіб для циклів)

    StringBuilder sb = new StringBuilder("Java");
    sb.append(" 8").append(" Rocks!");
    System.out.println(sb.toString()); // Результат: "Java 8 Rocks!"
    Java

    Для роботи з підрядками використовуються методи substring().

    String text = "Java 8 є потужною";
    String sub1 = text.substring(5); // Вирізає з 5-ї позиції до кінця: "8 є потужною"
    String sub2 = text.substring(5, 10); // Вирізає тільки з 5-ї до 10-ї: "8 є п"
    System.out.println(sub1);
    System.out.println(sub2);
    Java

    Перш ніж виконувати операції з рядками, корисно перевірити, чи рядок не є null або порожнім.

    String str = null;
    
    // Перевірка
    if (str == null || str.isEmpty()) {
        System.out.println("Рядок є порожнім або null");
    } else {
        System.out.println("Рядок має значення: " + str);
    }
    Java

    Використання Objects для перевірки

    import java.util.Objects;
    
    String str = null;
    if (Objects.isNull(str)) {
        System.out.println("Рядок є null");
    }
    Java

    Перевірка на isBlank() (починаючи з Java 11)

    Можна також використовувати новий метод isBlank, але він доступний тільки з Java 11+.


    Щоб дізнатись довжину рядка, використовується метод length().

    String str = "Програмування";
    int length = str.length();
    System.out.println("Довжина рядка: " + length); // Виведе: 14
    Java

    Перевірка на вміст підрядка

    Метод contains() дозволяє перевірити, чи рядок містить певний текст.

    String text = "Java 8 є найкращою";
    if (text.contains("Java")) {
        System.out.println("У рядку є слово 'Java'");
    }
    Java

    Пошук позиції підрядка

    Методи indexOf() і lastIndexOf() допомагають знайти позицію підрядка.

    String text = "Java 8 є найкращою";
    if (text.contains("Java")) {
        System.out.println("У рядку є слово 'Java'");
    }
    Java

    Заміна частин рядка

    Для заміни використовується метод replace() або регулярні вирази.

    String text = "Java 8";
    String replaced = text.replace("8", "11"); // Заміна всіх "8" на "11"
    System.out.println(replaced); // Виведе: "Java 11"
    Java

    Розбиття рядка

    Для розбиття рядка на частини використовується метод split().

    String text = "Java,Python,C++";
    String[] languages = text.split(","); // Розділимо за комою
    
    for (String lang : languages) {
        System.out.println(lang);
    }
    // Виведе:
    // Java
    // Python
    // C++
    Java

    Перетворення інших типів у String

    Використання методу String.valueOf()

    int number = 42;
    String numberStr = String.valueOf(number); // Конвертує int в рядок
    System.out.println(numberStr); // Виведе: "42"
    Java

    Сучасний підхід до роботи з Optional (Java 8)

    Щоб уникнути NullPointerException, можна використовувати Optional.

    import java.util.Optional;
    
    Optional<String> optionalStr = Optional.ofNullable(null);
    
    String result = optionalStr.orElse("Значення за замовчуванням");
    System.out.println(result); // Виведе: "Значення за замовчуванням"
    Java

    Інші корисні методи

    • startsWith(): перевіряє, чи рядок починається з певного тексту.
    • endsWith(): перевіряє, чи рядок закінчується на певний текст.
    • equals() і equalsIgnoreCase(): порівняння рядків (з урахуванням або без урахування регістру).
    • repeat() (доступно з Java 11): повторює рядок.

    Об’єкт String у Java є невід’ємною частиною роботи з текстовими даними. Його функціональність, разом із багатим набором методів, дозволяє ефективно працювати з рядками навіть у складних завданнях. Завдяки своїй незмінності, цей клас забезпечує високий рівень безпеки даних і прогнозовану поведінку, хоча для інтенсивних маніпуляцій з текстом варто використовувати й інші класи, як-от StringBuilder чи StringBuffer.

    У Java 8 String надає великий набір методів для роботи з текстовими даними. Ми розглянули різні аспекти роботи з рядками: додавання, вирізання, перевірка на null, пошук підрядків, заміну, модифікацію регістрів тощо.

    Ефективне використання можливостей String дасть змогу писати чистий, зрозумілий та продуктивний код.

  1. javaadmin

    Супер крутий Dev

    Related Posts

    Java Collections Framework: List, Set чи Map?

    Уявіть, що ви прийшли на склад інтернет-магазину. На одній полиці товари лежать строго в тому порядку, у якому їх привезли. На іншій — кожен предмет унікальний, і дублікати сюди не кладуть за жодних умов. А в кутку стоїть картотека, де кожному товару відповідає унікальний штрих-код. У світі Java цей склад називається Java Collections Framework (JCF). Це потужний набір інтерфейсів та класів, який дозволяє ефективно керувати групами об’єктів. Проте у…

    JBang: Як вивчати Java легко

    Java довгий час мала репутацію мови, яка потребує занадто багато «ритуалів»: створення структури каталогів, налаштування Maven або Gradle, написання довгих pom.xml лише для того, щоб протестувати одну ідею. JBang — це інструмент, який змінює правила гри, дозволяючи запускати Java-код так само легко, як скрипти на Python або Bash. Що таке JBang? JBang — це утиліта для командного рядка, яка дозволяє створювати, редагувати та запускати самодостатні Java-скрипти. Основна ідея…

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

    Цікаве

    Dependency Injection у Spring: пояснюємо на пальцях

    • Автор javaadmin
    • 31 Липня, 2026
    • 14 views
    Dependency Injection у Spring: пояснюємо на пальцях

    Java Collections Framework: List, Set чи Map?

    • Автор javaadmin
    • 31 Липня, 2026
    • 28 views
    Java Collections Framework: List, Set чи Map?

    Оптимізуємо це: GraalVM Native Image, Leyden та CRaC

    • Автор javaadmin
    • 17 Липня, 2026
    • 56 views
    Оптимізуємо це: GraalVM Native Image, Leyden та CRaC

    JBang: Як вивчати Java легко

    • Автор javaadmin
    • 12 Травня, 2026
    • 130 views
    JBang: Як вивчати Java легко

    Agent Skills: Що це таке і чому про це варто знати

    • Автор javaadmin
    • 13 Квітня, 2026
    • 233 views
    Agent Skills: Що це таке і чому про це варто знати

    Dependency Injection в Java

    • Автор javaadmin
    • 9 Грудня, 2025
    • 406 views
    Dependency Injection в Java