String

Класс java.lang.String представляет собой неизменяемую (immutable) последовательность символов Unicode. Любая строка в коде Java вида "Hello" — это объект класса String.

Строки в Java хранятся в специальной области памяти — пуле строк (String Pool). Это значит, что одинаковые литералы вида "Привет" указывают на один и тот же объект в памяти. Класс находится в пакете java.lang, поэтому его не нужно импортировать.

Главная особенность: после создания строку нельзя изменить. Любой метод вроде replace() или toUpperCase() не меняет исходный объект, а возвращает новый.

Зачем нужен

  • хранить и обрабатывать текст (имена, сообщения, ввод пользователя);

  • сравнивать, искать и заменять подстроки;

  • формировать выводимые сообщения и форматировать данные;

  • передавать текстовые данные между методами и классами.

Способы создания

String a = "Привет";                      // строковый литерал
String b = new String("Привет");          // через конструктор
char[] arr = {'J', 'a', 'v', 'a'};
String c = new String(arr);               // из массива char
String d = String.valueOf(42);            // из числа -> "42"

Популярные методы

Метод

Назначение

length()

возвращает количество символов в строке

charAt(int i)

возвращает символ по индексу

equals(Object o)

сравнивает содержимое строк (НЕ ==)

equalsIgnoreCase(String s)

сравнивает без учёта регистра

indexOf(String s)

индекс первого вхождения подстроки, или -1

substring(int a, int b)

подстрока с индекса a до b (b не включительно)

toUpperCase() / toLowerCase()

перевод регистра

trim()

удаление пробелов по краям

replace(old, new)

замена символов или подстрок

split(String regex)

разбиение на массив по разделителю

contains(CharSequence s)

содержит ли строка подстроку

startsWith / endsWith

начинается/заканчивается ли подстрокой

concat(String s)

присоединение строки

Примеры

Пример 1. Длина и обращение к символам

public class Demo1 {
    public static void main(String[] args) {
        String s = "AlashEd";
        System.out.println("Длина: " + s.length());
        System.out.println("Первый символ: " + s.charAt(0));
        System.out.println("Последний: " + s.charAt(s.length() - 1));
    }
}

Вывод:

Длина: 7
Первый символ: A
Последний: d

Пример 2. Сравнение строк

public class Demo2 {
    public static void main(String[] args) {
        String a = "Java";
        String b = "java";
        System.out.println(a.equals(b));
        System.out.println(a.equalsIgnoreCase(b));
        System.out.println(a == b);
    }
}

Вывод:

false
true
false

Пример 3. Подстроки и поиск

public class Demo3 {
    public static void main(String[] args) {
        String s = "Hello, world!";
        System.out.println(s.substring(7, 12));
        System.out.println(s.indexOf("world"));
        System.out.println(s.contains("Hello"));
    }
}

Вывод:

world
7
true

Пример 4. Регистр и удаление пробелов

public class Demo4 {
    public static void main(String[] args) {
        String s = "   Arduino   ";
        System.out.println("[" + s.trim() + "]");
        System.out.println(s.trim().toUpperCase());
        System.out.println(s.trim().toLowerCase());
    }
}

Вывод:

[Arduino]
ARDUINO
arduino

Пример 5. Замена символов

public class Demo5 {
    public static void main(String[] args) {
        String phone = "+7 (777) 123-45-67";
        String digits = phone.replace(" ", "")
                             .replace("(", "")
                             .replace(")", "")
                             .replace("-", "");
        System.out.println(digits);
    }
}

Вывод:

+77771234567

Пример 6. Разбиение строки

public class Demo6 {
    public static void main(String[] args) {
        String csv = "яблоко,банан,киви,манго";
        String[] parts = csv.split(",");
        for (String p : parts) {
            System.out.println(p);
        }
    }
}

Вывод:

яблоко
банан
киви
манго

Пример 7. Конкатенация

public class Demo7 {
    public static void main(String[] args) {
        String name = "Беку";
        int age = 14;
        String msg = "Меня зовут " + name + ", мне " + age + " лет.";
        System.out.println(msg);
    }
}

Вывод:

Меня зовут Беку, мне 14 лет.

Пример 8. Проверка начала и конца

public class Demo8 {
    public static void main(String[] args) {
        String file = "robot_phobo.ino";
        System.out.println(file.startsWith("robot"));
        System.out.println(file.endsWith(".ino"));
        System.out.println(file.endsWith(".cpp"));
    }
}

Вывод:

true
true
false

См. также

Примечание

Лицензия и источники

Техническое описание класса адаптировано из официальной Java API Documentation (https://docs.oracle.com/en/java/javase/), Oracle Free Documentation License. Перевод на русский, примеры и пояснения — © AlashEd Wiki.