Java文本块用"""包裹,Java15正式支持,JDK17+默认可用;自动丢弃首尾换行、统一LF换行、支持\续行和缩进裁剪,转义序列需显式处理。

Java 的文本块(Text Blocks)用 """ 包裹多行字符串,从 Java 13 开始作为预览特性引入,到 Java 15 正式成为标准特性。JDK 17 及后续 LTS 版本全面支持,无需额外开启参数。
换行处理规则
文本块不是“原样照搬”源码换行,而是按明确逻辑标准化:
- 开头 """ 后的首个换行符被自动丢弃
- 结尾 """ 前的换行符也被忽略(除非该行有内容且你显式保留)
- 所有中间换行符统一转为 \n(LF),与操作系统无关,确保跨平台一致
- 若某行末尾加 \(反斜杠后无空格),则该换行被抑制,实现“逻辑续行”
缩进裁剪(Indent Stripping)
编译器会自动计算并移除每行共有的前导空白,避免代码缩进污染字符串内容:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 只看所有非空行(跳过纯空行),找出它们最左非空白字符所在列的最小值
- 每行开头减去这个最小空白量(空格按1算,制表符行为依赖编辑器,建议全用空格)
- 纯空行不参与计算,也不被裁剪,原样保留
常见写法与效果对比
以下写法中,注意缩进对齐和结尾引号位置:
立即学习“Java免费学习笔记(深入)”;
-
String s = """<div>\n <p>Hi</p>\n</div>""";→ 每行裁剪掉 0 个空格(首行无缩进),结果含换行 -
String s = """\n <div>\n <p>Hi</p>\n </div>\n """;→ 最小缩进是 4(第二行开头有4空格),所有行删4空格 -
String s = """Line1\Line2""";→ \ 抑制换行,“Line1Line2”为单行
补充说明
文本块默认不解析普通转义序列(如 \n 就是字面两个字符),如需换行符得写成 \n 或用 formatted() 方法;也可调用 stripIndent() 在运行时再处理缩进,适合动态场景。

















