Gymterview
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() (пробельные строки). Покажите, что знаете, когда какой метод уместен.