junior
Новые методы String в Java 11
Java 11 добавила к классу String методы isBlank(), strip(), lines() и repeat(), покрывающие частые операции, для которых ранее требовались внешние библиотеки.
Пример
// isBlank() — проверка на пустоту или только пробелы (включая Unicode)
"".isBlank(); // true
" ".isBlank(); // true
" hello ".isBlank(); // false
// Отличие от isEmpty(): " ".isEmpty() -> false, " ".isBlank() -> true
// strip() — удаление пробелов в начале и конце (Unicode-aware)
" hello ".strip(); // "hello"
" hello ".stripLeading(); // "hello "
" hello ".stripTrailing();// " hello"
// lines() — разбиение на строки (возвращает Stream<String>)
"line1\nline2\nline3".lines().toList(); // ["line1", "line2", "line3"]
// repeat(int) — повторение строки
"abc".repeat(3); // "abcabcabc"
"-".repeat(50); // 50 дефисов
strip() vs trim()
| Метод | Unicode-пробелы | Поведение |
|---|---|---|
trim() |
Только ASCII (<=\u0020) | Старый метод, не знает про Unicode |
strip() |
Все Unicode-пробелы (\u00A0, \u2000, \u3000…) | Рекомендуется в новом коде |
Частые ошибки
- Использовать
trim()вместоstrip()—trim()не удаляет Unicode-пробелы (неразрывный пробел\u00A0) repeat(0)— возвращает пустую строку, не null; это корректное поведение
Как используется в 2026
- Эти методы — повседневный инструмент; используются повсеместно
isBlank()заменяетStringUtils.isBlank()из Apache Commons в большинстве случаев
На собеседовании: ключевой момент — разница между
strip()иtrim()(Unicode), и междуisBlank()иisEmpty()(пробельные строки). Покажите, что знаете, когда какой метод уместен.