/
Программирование
/
Курс Java
/

Многострочные строки

Java: Многострочные строки

Иногда текст в программе должен занимать несколько строк. Так бывает при генерации письма, создании шаблона, форматировании сообщения об ошибке или работе с длинными текстами.

Один способ мы уже видели. Это символ перевода строки \n внутри обычной строки в двойных кавычках:

System.out.println("Пример текста,\nсостоящего из\nнескольких строк");

На печати получится вот так:

Пример текста,
состоящего из
нескольких строк

Способ рабочий, но неудобный. Каждый \n приходится вставлять вручную, и чем длиннее текст, тем хуже читается код.

Текстовые блоки

В Java есть запись, при которой текст в коде выглядит так же, как при выводе. Это текстовый блок (text block). Он начинается и заканчивается тремя двойными кавычками """.

Открывающие """ ставят в конце строки, а сам текст пишут со следующей строки:

System.out.println("""
    Пример текста,
    состоящего из
    нескольких строк""");

Вывод будет таким же, как у варианта с \n:

Пример текста,
состоящего из
нескольких строк

Переносы строк внутри блока Java добавляет сама, поэтому \n писать не нужно.

Отступы внутри блока

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

Положение закрывающих """ тоже влияет на отступ. Если сдвинуть их левее текста, часть пробелов слева останется в результате. Поэтому закрывающие кавычки обычно держат на уровне текста или сразу после последней строки.

Кавычки без экранирования

Внутри текстового блока двойные кавычки можно писать прямо, без обратного слеша:

System.out.println("""
    Здесь "двойные" кавычки видны как есть""");

Вывод:

Здесь "двойные" кавычки видны как есть

В обычной строке для этого пришлось бы экранировать каждую кавычку через \".

Заключение

Текстовый блок записывают между тройными двойными кавычками """. Открывающие """ ставят в конце строки, а текст пишут ниже. Переносы строк Java добавляет сама, общий отступ слева отсекается. Для машины текстовый блок и строка с \n означают одно и то же, но для человека блок нагляднее.

Задание

Используя текстовый блок """...""", выведите на экран текст из двух строк:

Summer
has come

Подберите отступ внутри блока так, чтобы слова начинались с первого символа без лишних пробелов слева.

Полезное

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются