Строки в Java и класс String

Строки в Java: класс String и его методы, неизменяемость, конкатенация, сравнение строк через equals и эффективный StringBuilder.

Строка в Java — это объект класса String, хранящий последовательность символов. Строки неизменяемы: любой «изменяющий» метод возвращает новую строку, а исходная остаётся прежней.

Создание строк

String greeting = "Привет";
String name = "Мир";

System.out.println(greeting.length());   // 6 — длина строки

Вывод:

6

Конкатенация

Строки склеивают оператором +. При сложении с числом оно автоматически превращается в строку.

String name = "Аня";
int age = 25;

String message = name + ", возраст " + age;
System.out.println(message);

Вывод:

Аня, возраст 25

Полезные методы

Метод

Что делает

length()

количество символов

toUpperCase() / toLowerCase()

смена регистра

charAt(i)

символ по индексу

substring(a, b)

подстрока

contains(s)

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

replace(a, b)

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

trim()

убирает пробелы по краям

String s = "  Java Rocks  ";
System.out.println(s.trim());              // "Java Rocks"
System.out.println(s.trim().toUpperCase());// "JAVA ROCKS"
System.out.println("Java".charAt(0));      // 'J'
System.out.println("Java".substring(1, 3));// "av"

Вывод:

Java Rocks
JAVA ROCKS
J
av

Сравнение строк: equals, а не ==

Это важнейший момент. Оператор == сравнивает ссылки (один ли это объект), а не содержимое. Чтобы сравнить строки по содержимому, используют метод equals().

String a = "привет";
String b = new String("привет");

System.out.println(a == b);          // false — разные объекты
System.out.println(a.equals(b));     // true  — одинаковое содержимое

Вывод:

false
true

Запомните правило: строки сравнивают через equals(). Для сравнения без учёта регистра есть equalsIgnoreCase().

StringBuilder для частых изменений

Поскольку String неизменяем, склейка строк в цикле создаёт множество лишних объектов. Если строку нужно собирать по кусочкам, эффективнее StringBuilder.

StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 3; i++) {
    sb.append("№").append(i).append(" ");
}
System.out.println(sb.toString());

Вывод:

№1 №2 №3 

Коротко

  • Строка — объект String, неизменяемый: методы возвращают новую строку.
  • Склейка — оператором +; число при этом превращается в строку.
  • Сравнивайте строки через equals(), а не ==.
  • Для сборки строки в цикле используйте StringBuilder.
Проверьте себя
1. Как правильно сравнить две строки по содержимому в Java?
Aa == b
Ba.equals(b)
Ca = b
Dcompare(a, b)
2. Что значит «строки в Java неизменяемы»?
AСтроку нельзя создать
BМетоды не меняют исходную строку, а возвращают новую
CСтроки нельзя сравнивать
DСтрока хранит только одну букву
3. Что эффективнее для сборки строки в цикле?
AСклейка через +
BStringBuilder
Cchar[]
DРазницы нет
Поддержать проект