文本块不支持反斜杠续行,反斜杠仅作普通字符;可用+拼接、stripIndent()配合replace()、formatted()或String.join()实现逻辑连续,必要时用传统字符串。

在 Java 中,文本块(Text Block,自 Java 15 正式引入,Java 14 起作为预览特性)本身不支持用反斜杠 来“消除换行”——这是和普通字符串字面量的关键区别。
你不能像这样写:
String s = """
hello
world"""; // 编译错误!文本块中反斜杠续行不被允许这是因为文本块的设计目标是保留原始换行和缩进语义,语法上明确禁止在行尾使用反斜杠进行续行。JVM 规范和 Java 语言规范都规定:文本块内的反斜杠 不具备“续行”功能,它只是普通字符;若出现在行末,会导致编译失败(error: illegal line end in text block 或类似提示)。
那怎么实现“逻辑上连续、视觉上换行”的效果?有几种实用方式:
立即学习“Java免费学习笔记(深入)”;
-
用
+拼接多个文本块或普通字符串
利用字符串拼接打破物理换行,保持代码可读性:String sql = """ SELECT id, name FROM users WHERE status = ?""" + " AND age > ?"; -
用
stripIndent()+ 手动替换换行符
先定义清晰缩进的文本块,再移除换行或替换成空格:String html = """ <div> <h1>Title</h1> <p>Content</p> </div> """.stripIndent().replace(" ", " ").replace(" ", " "); // → "<div> <h1>Title</h1> <p>Content</p> </div>" -
用
formatted()或String.join()控制输出格式
若目标是生成无换行的单行内容,更适合用动态组装:String path = String.format("%s/%s/%s", "api", "v1", "users"); // 或 String url = String.join("/", "https:", "", "example.com", "api", "v1", "users"); -
必要时退回到普通字符串字面量
对极简、无换行需求的场景,传统字符串更直接:String regex = "\d{3}-\d{2}-\d{4}"; // 反斜杠转义正常工作
注意:文本块中的反斜杠只在需要字面量 时才需双写(如 \n 表示两个字符 和 n),但永远不能靠 把两行连成一行。
不复杂但容易忽略。


















