Строки в Java: String, StringBuilder и полезные методы

Строки — самый частый тип данных в любой программе: имена, адреса, сообщения, JSON. В Java у них есть особенности, которые удивляют новичков. Разбираем главное.
Редакция Бинариума
Пишем о профессиях в дизайне, BIM и IT · 6 минут чтения
Из этой статьи вы узнаете:
Строки неизменяемы
Объект String нельзя изменить после создания. Любой метод, который «меняет» строку, на самом деле возвращает новую.
String s = "java"; s.toUpperCase(); // s по-прежнему "java" s = s.toUpperCase(); // теперь s = "JAVA"
Неизменяемость делает строки безопасными: их можно передавать куда угодно, не боясь, что кто-то их испортит.
Методы на каждый день
| Метод | Что делает |
|---|---|
| length() | Длина строки |
| trim(), strip() | Убирает пробелы по краям |
| toLowerCase(), toUpperCase() | Меняет регистр |
| contains("x") | Есть ли подстрока |
| substring(a, b) | Часть строки |
| replace("a", "b") | Замена |
| split(",") | Разделение в массив |
| isBlank() | Пустая или из пробелов |
| String.format(...) | Подстановка значений в шаблон |
String line = "Анна,Казань,29";
String[] parts = line.split(",");
String msg = String.format("%s из города %s", parts[0], parts[1]);Курс Бинариума
Java-разработчик с нуля — строки, коллекции и практика
StringBuilder
Если склеивать строки в цикле через +, Java каждый раз создаёт новую строку. На тысячах итераций это заметно замедляет программу. StringBuilder изменяемый и работает быстрее.
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 5; i++) {
sb.append(i).append(" ");
}
String result = sb.toString(); // "1 2 3 4 5 "Типичные ошибки
- Сравнение через ==. Сравнивает ссылки, а не содержимое. Используйте equals или equalsIgnoreCase.
- Забыть присвоить результат метода — строка не изменится.
- Вызов метода у null — NullPointerException. Безопаснее писать "текст".equals(value).
- Склейка в большом цикле через + вместо StringBuilder.
Главное
- String неизменяем: методы возвращают новые строки.
- Самые нужные методы: split, substring, replace, trim, format.
- Для склейки в циклах используйте StringBuilder.
- Строки сравнивают через equals.
Частые вопросы
Чем StringBuilder отличается от StringBuffer?
StringBuffer потокобезопасен, но медленнее. В обычном коде используют StringBuilder.
Как проверить, что строка пустая?
isEmpty() — если длина равна нулю, isBlank() — если строка пустая или состоит только из пробелов.
Курс Бинариума
Java-разработчик с нуля
Основы языка, ООП и проект для портфолио — с практикой на каждой неделе.
- 11 недель обучения
- 10+ практических работ
- Проект на GitHub