Java 13 поставила долгожданные многострочные строки или текстовые блоки .  Вам больше не нужно объединять строки, которые занимают несколько строк или экранировать специальные символы, что действительно улучшает читабельность вашего кода.  Текстовые блоки являются функцией языка предварительного просмотра , что означает, что они должны быть явно включены в компиляторе Java и во время выполнения с использованием флага --enable-preview . 
Вот пример текстового блока:
| 
 1 
2 
3 
4 
5 
6 
 | 
String textBlock = """    <html>      <body>        <p style="color:red">This is a text block</p>      </body>    </html>"""; | 
  Как показано выше, текстовый блок заключен в три двойные кавычки ( """ ). За пробелом """ не должно следовать никаких непробельных символов, т.е. фактический текст должен начинаться со строки, следующей за открывающим разделителем.  Вам не нужно экранировать какие-либо специальные символы в текстовом блоке, и это здорово! 
В предыдущих версиях Java вам пришлось бы писать так:
| 
 1 
2 
3 
4 
5 
 | 
final String old = "<html>\n" +    "\t<body>\n" +    "\t\t<p style=\"color:red\">This is a text block</p>\n" +    "\t</body>\n" +    "</html>"; | 
  Фактически, в этом примере textBlock == old поскольку оба имеют одинаковое содержимое и ссылаются на один и тот же объект в пуле String . 
Теперь давайте посмотрим, как обрабатывается начальный пробел, рассмотрев следующие два текстовых блока:
| 
 01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 
12 
13 
14 
 | 
String textBlock1 = """    <html>      <body>        <p style="color:red">This is a text block</p>      </body>    </html>""";  String textBlock2 = """        <html>          <body>            <p style="color:red">This is a text block</p>          </body>        </html> """; | 
Если вы распечатаете эти два текстовых блока, первый будет напечатан как:
| 
 1 
2 
3 
4 
5 
 | 
<html>  <body>    <p style="color:red">This is a text block</p>  </body></html> | 
а второй как:
| 
 1 
2 
3 
4 
5 
 | 
<html>          <body>            <p style="color:red">This is a text block</p>          </body>        </html> | 
Крайний левый символ без пробелов в любой из строк в текстовом блоке или крайний левый закрывающий разделитель определяет «начальную точку» всего блока, и пробел сохраняется в каждой строке от этой начальной точки.
  Еще один момент, на который следует обратить внимание, это то, что конечные пробелы в конце каждой строки удаляются в текстовых блоках, но вы можете использовать восьмеричную escape-последовательность \040 чтобы сохранить ее, как показано ниже: 
| 
 1 
2 
3 
 | 
String octal = """    line 1    \040 line 2"""; | 
| 
 Опубликовано на Java Code Geeks с разрешения Фахда Шарифа, партнера нашей программы JCG . Смотрите оригинальную статью здесь: Java 13: текстовые блоки Мнения, высказанные участниками Java Code Geeks, являются их собственными.  |