Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Java: Java, text blocks, multiline strings, string literals

Что такое текстовые блоки (text blocks) в Java?

Вопрос проверяет понимание текстовых блоков (text blocks) в Java, которые упрощают работу с многострочными строками и улучшают читаемость кода.

Короткий ответ

Текстовые блоки — это новая возможность в Java (начиная с версии 13 в preview и стабильная с Java 15), которая позволяет удобно записывать многострочные строковые литералы. Вместо конкатенации строк и экранирования кавычек можно использовать тройные кавычки. Это делает код чище, особенно при работе с HTML, JSON, SQL или длинными сообщениями. Текстовые блоки автоматически обрабатывают отступы и переносы строк, что снижает вероятность ошибок.

Длинный ответ

Текстовые блоки (text blocks) в Java — это специальный синтаксис для записи многострочных строковых литералов, представленный как стандартная функция начиная с Java 15. Они решают проблему громоздкого форматирования длинных строк, которые часто встречаются при встраивании HTML, JSON, XML, SQL-запросов или многострочных сообщений в код.

Основной синтаксис

Текстовый блок начинается с трёх двойных кавычек, за которыми следует перевод строки. Содержимое блока записывается на следующих строках, а закрывается также трёмя кавычками. Например:

String html = """
    <html>
        <body>
            <p>Hello, World!</p>
        </body>
    </html>
    """;

Обратите внимание на символ новой строки после открывающих кавычек — он обязателен. Компилятор удаляет случайные отступы (incidental indentation), основываясь на самой левой позиции закрывающих кавычек, что сохраняет только значимые отступы внутри блока.

Преимущества перед обычными строками

  • Улучшенная читаемость: Код выглядит так же, как и итоговая строка, без разрывов и конкатенаций.
  • Меньше экранирования: Не нужно экранировать двойные кавычки внутри блока (хотя обратный слэш и тройные кавычки всё ещё требуют экранирования).
  • Автоматическая обработка переносов строк: Каждая новая строка в блоке становится символом новой строки в результирующей строке.
  • Управление отступами: Метод String::stripIndent() применяется автоматически, убирая лишние пробелы слева.

Практический пример

Сравним обычный многострочный литерал и текстовый блок для JSON:

// Старый способ (громоздко)
String jsonOld = "{\n" +
                 "  \"name\": \"Alice\",\n" +
                 "  \"age\": 30\n" +
                 "}";

// С текстовым блоком (чисто)
String jsonNew = """
    {
      "name": "Alice",
      "age": 30
    }
    """;

Текстовый блок явно проще для чтения и редактирования. Также можно использовать методы, такие как formatted(), для подстановки переменных прямо внутри блока, аналогично String.format().

Где применять

Текстовые блоки идеальны для встраивания статических многострочных данных в код: шаблоны HTML, JSON-конфигурации, SQL-запросы в простых приложениях, длинные сообщения об ошибках или приветственные тексты. Однако для динамически формируемых строк со сложной логикой лучше использовать другие средства, например, шаблонизаторы или StringBuilder.

Вывод: Текстовые блоки стоит применять везде, где требуется читаемое представление многострочных строковых констант в Java-коде, что уменьшает количество ошибок и упрощает поддержку.

Уровень

  • Рейтинг:

    3

  • Сложность:

    4

Навыки

  • Java

    Java

Ключевые слова

#Java

#text blocks

#multiline strings

#string literals

Подпишись на Java Developer в телеграм