Java字符串折行与转义需区分源码、运行时、输出三层:长文本用+拼接或JDK15+文本块;转义符如 、 、"、\须严格书写;外部读入的 是字面量,需手动解析;调试应查真实字符而非println渲染效果。

Java 字符串中处理长文本折行和特殊转义字符,关键在于分清“源码书写”“运行时内容”和“输出表现”三层含义——不是所有换行都靠
,也不是所有反斜杠都要手动加倍。
长文本折行:别硬敲回车,用字符串拼接或文本块
直接在双引号内换行会编译报错。比如这样写是非法的:
String s = "Hello<br>World"; // 编译失败
正确做法有两种:
立即学习“Java免费学习笔记(深入)”;
- 用
+拼接多行字符串(兼容所有 JDK 版本):String s = "Hello" +<br> "World";
- 用文本块(JDK 15+ 正式支持),三重引号自动保留缩进和换行:
String s = """<br> Hello<br> World<br> """;
注意:首尾换行和缩进会被自动裁剪,可用折行控制(如末尾加可避免空行)
转义字符必须写对:常见错误是少写或写错反斜杠
Java 在编译期解析转义序列,所以写错就直接报错或语义错位。核心规则只有一条:反斜杠是“开关”,后面跟什么,就解释成什么。
-
" "→ 换行符(ASCII 10),System.out.println("A B")输出两行 -
" "→ 制表符,常用于对齐,但终端显示宽度不固定 -
"""→ 表示字符串内的双引号,比如"He said "Hi"" -
"\\"→ 表示一个字面反斜杠,路径"C:\Users\name"必须这么写 - 误写
" "为"n"或漏掉反斜杠,就只是普通字符 n,不是换行
从外部读入的字符串不会自动转义
用户输入、文件读取、网络响应得到的字符串,里面的
就是普通字符 ‘’ 和 ‘n’,不是换行符。它不会被 Java 自动解析成控制字符。
例如读取文件内容:"Line1\nLine2"(实际是 10 个字符),打印出来就是原样显示 Line1
Line2,而非换行。
如需还原,得手动解析:
- 用
String.replace("\n", " ")替换字面为真实换行符 - 更安全的做法是用 Apache Commons Text 的
StringEscapeUtils.unescapeJava(),它能处理、u0041等全部标准转义 - 正则替换要小心:写
replaceAll("\\n", " "),因为正则里反斜杠也要转义
调试时看清真实内容:别只信 System.out.println
System.out.println(s) 会把
渲染成换行,容易误判;而 System.out.println(s.length()) 或 IDE 调试器查看变量值,才能看到真实字符组成。
例如:
-
"a b"长度是 3(a、换行符、b) -
"a\nb"长度是 4(a、、n、b) - 用
s.chars().forEach(c -> System.out.printf("U+%04X ", c))可逐个打印 Unicode 码点,彻底看清


















