Java中生成固定格式输出文本最常用、最推荐的方式是String.format()或System.out.printf(),二者语法一致,支持%d、%s、%.2f等类型码及宽度、对齐、精度控制;复杂模板可选MessageFormat;StringBuilder仅适用于无格式要求的简单拼接。
Java中生成
固定格式的输出文本,最常用、最推荐的方式是使用 String.format() 或 printf(适用于输出到控制台),配合格式化字符串模板。它类似C语言的printf,但更安全、类型更明确。
这是最通用的方法,适合拼接后赋值给变量或返回结果。
String.format("模板字符串", 参数1, 参数2, ...)
%[标识符]类型码 占位,例如 %d(整数)、%s(字符串)、%.2f(保留两位小数的浮点数)%05d 表示5位数字,不足左补0;%-10s 表示左对齐、最小宽度10的字符串示例:
String result = String.format("订单号:%s,金额:¥%.2f,时间:%tF %tR", "ORD-2025-001", 99.5, new Date(), new Date());输出:订单号:ORD-2025-001,金额:¥99.50,时间:2025-06-15 14:30
如果只是打印,不用保存字符串,System.out.printf() 更简洁,语义清晰。
String.format() 完全一致,只是输出目标是 stdout%n 配合换行(比 \n 更平台安全)示例:
System.out.printf("用户:%s,年龄:%d,积分:%06d%n", "张三", 28, 123);输出:用户:张三,年龄:28,积分:000123
当模板含重复占位、需要按名称而非位置填充(如 SQL 模板、邮件模板),java.text.MessageFormat 更灵活。
{0}、{1,date,yyyy-MM-dd}、{name}(需搭配 Map + 自定义解析器,标准版只支持序号)示例:
String pattern = "您好,{0}!您有 {1} 条未读消息,最后登录时间:{2,date,yyyy-MM-dd HH:mm}";仅当格式极其固定、无类型转换/对齐/精度要求时,可用 StringBuilder.append() 手动拼接。但一旦涉及数字格式、空格对齐、null 安全,就容易出错,维护性差。
不建议用于“固定格式输出”这类有明确排版需求的场景。
基本上就这些——日常开发中,String.format() 覆盖 90% 的固定格式文本生成需求,够用、清晰、不易出错。