[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-11-25-text-blocks-mnogostrochnye-stroki":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},405,"text-blocks-mnogostrochnye-stroki",11,"java-11-25","Java 11–25","🆕","Text Blocks (многострочные строки)","Text Blocks (финализированы в Java 15) — многострочные строковые литералы, сохраняющие форматирование. Начинаются с `\"\"\"` и переноса строки, отступ определяется позицией закрывающих `\"\"\"`.\n\n\u003Cdetails>\u003Csummary>Пример: JSON, SQL, HTML\u003C\u002Fsummary>\n\n```java\n\u002F\u002F До Java 15 — конкатенация\nString json = \"{\\n\" +\n    \"  \\\"name\\\": \\\"John\\\",\\n\" +\n    \"  \\\"age\\\": 30\\n\" +\n    \"}\";\n\n\u002F\u002F Java 15+ — Text Block\nString json = \"\"\"\n        {\n          \"name\": \"John\",\n          \"age\": 30\n        }\n        \"\"\";\n\n\u002F\u002F SQL\nString sql = \"\"\"\n        SELECT u.name, u.email\n        FROM users u\n        WHERE u.status = 'ACTIVE'\n        ORDER BY u.name\n        \"\"\";\n\n\u002F\u002F HTML с форматированием\nString html = \"\"\"\n        \u003Chtml>\n            \u003Cbody>\n                \u003Ch1>Hello, %s!\u003C\u002Fh1>\n            \u003C\u002Fbody>\n        \u003C\u002Fhtml>\n        \"\"\".formatted(\"World\");\n```\n\n\u003C\u002Fdetails>\n\n### Управление отступами и escape-последовательности\n\n```java\n\u002F\u002F Отступ определяется позицией закрывающих \"\"\"\nString s1 = \"\"\"\n        Hello\"\"\"; \u002F\u002F нет завершающего \\n\n\nString s2 = \"\"\"\n        Hello\n        \"\"\"; \u002F\u002F есть завершающий \\n\n\n\u002F\u002F Trailing whitespace удаляется; для сохранения — \\s\nString s3 = \"\"\"\n        line with trailing space\\s\n        \"\"\";\n\n\u002F\u002F \\: line continuation (Java 14+, без переноса строки)\nString longLine = \"\"\"\n        This is a very long line that \\\n        continues on the same line\"\"\";\n\u002F\u002F -> \"This is a very long line that continues on the same line\"\n```\n\n### Частые ошибки\n\n- Неожиданные отступы — если закрывающие `\"\"\"` не выровнены, результат содержит лишние пробелы\n- Text Block в аннотациях — не поддерживается в `@Query` до Spring Data 3.x (нужна Java 17+)\n- `\\n` внутри Text Block — Text Block сам добавляет переносы; явный `\\n` удвоит перенос\n\n### Как используется в 2026\n\n- Стандарт для встроенных SQL, JSON, HTML, XML, YAML в Java-коде\n- Широко используется в `@Query` (Spring Data), тестах, конфигурации\n\n> **На собеседовании:** покажите, что понимаете правило определения отступа (по позиции закрывающих `\"\"\"`), и знаете про `\\s` для сохранения пробелов. Частая ошибка — путать поведение отступов.","","junior",[15],"java-modern",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Text Blocks (многострочные строки) — Gymterview","Text Blocks (финализированы в Java 15) — многострочные строковые литералы, сохраняющие форматирование. Начинаются с `\"\"\"` и переноса строки, отступ определяется","Text Blocks (финализированы в Java 15) — многострочные строковые литералы, сохраняющие форматирование. Начинаются с `\"\"\"",[15,13],"Text Blocks (финализированы в Java 15) — многострочные строковые литералы, сохраняющие форматирование. Начинаются с `\"\"\"` и переноса строки, отступ определяется позицией закрывающих `\"\"\"`.",true]