Java多段文字格式化首选System.lineSeparator()换行、Text Blocks(Java 15+)写多行字符串、StringBuilder动态构建、String.format()对齐字段,兼顾可读性、跨平台与性能。

Java中格式化多段文字输出,核心是控制换行、缩进、对齐和内容分隔,不依赖复杂框架也能清晰可读。
用转义字符实现基础换行与缩进
最直接的方式是使用\n换行符和\t制表符。注意:Windows下换行符为\r\n,但Java的System.lineSeparator()会自动适配系统。
- 避免硬写\n,优先用System.lineSeparator()提升跨平台兼容性
- 拼接多段时,用String.join()比反复+更高效,例如:String.join(System.lineSeparator(), lines)
- 需要缩进时,可用" " + line或String.format("%4s%s", "", line)(4空格前缀)
用Text Blocks(Java 15+)写可读性强的多行字符串
三重引号"""包裹的文本块天然支持换行、保留缩进(自动去除公共左缩进),适合配置说明、SQL、JSON片段等。
- 开头"""必须独占一行,结尾"""也建议独占一行,避免首尾意外空格
- 若需动态插入变量,用String.format()或STR.process()(Java 21+字符串模板)
- 示例:String help = """
Usage: app -f 输出时自动去掉每行前两个空格
-v enable verbose mode
-h show this help""";
用StringBuilder逐段构建并控制格式
当每段逻辑不同(如条件拼接、动态标题、带序号列表),StringBuilder比字符串拼接更灵活高效。
立即学习“Java免费学习笔记(深入)”;
- 先append()标题,再append(lineSeparator),再追加内容段
- 可封装工具方法,例如appendIndented(sb, "Detail:", content, 2)实现带缩进的子段落
- 避免在循环内反复创建StringBuilder,复用实例或用局部变量即可
对齐与列宽控制(适合表格类输出)
用String.format()或printf()可对齐字段,尤其适用于日志摘要、命令行报表。
- %-10s:左对齐、最小宽度10;%5d:右对齐、宽度5的整数
- 多行表格建议先收集数据为List,再统一格式化输出,避免逻辑混杂
- 注意中文字符宽度问题——String.format按字符数计宽,非像素,中文和英文显示可能错位,如需精确对齐需用等宽字体+全角处理(超出基础需求,一般CLI场景可接受)
基本上就这些。选哪种方式,取决于Java版本、是否需动态内容、输出场景是否要求严格对齐。小段说明用Text Blocks最清爽,动态组装用StringBuilder最可控,简单换行用lineSeparator()最稳妥。










