string.format 是 java 中最常用、最规范的字符串格式化方式,基于 printf 风格,支持占位符(如 %s、%d、%f、%ty 等)、对齐宽度精度控制、null 安全处理及 locale 本地化,但数值占位符传 null 会抛 npe。

String.format 是 Java 中最常用、最规范的字符串格式化方式,它基于 C 语言 printf 风格,语法清晰、类型安全、可读性强。
基本用法:占位符与参数一一对应
格式为 String.format(格式字符串, 参数1, 参数2, ...)。格式字符串中用 % 开头的占位符(如 %s、%d、%f)代表对应位置参数的格式化输出。
-
%s:任意对象,调用其toString()(包括null,会转为字符串"null") -
%d:十进制整数(int、long等整型) -
%f:浮点数(float、double),默认保留 6 位小数 -
%tY-%<em>tm-%</em>td:日期(java.util.Date或Calendar),%tY年,%<em>tm</em>月,%<em>td</em>日;重复使用同一参数可用%(如 <code>%tY 年 %<tm>)</tm>
常用格式控制:对齐、宽度、精度
占位符可扩展为 %[参数索引$][标志][宽度][.精度]转换符,例如:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
%10s:字符串右对齐,总宽至少 10 字符,不足补空格 -
%-10s:左对齐(-是标志) -
%05d:整数右对齐,宽度 5,不足补前导零(如42 → "00042") -
%.2f:浮点数保留 2 位小数(四舍五入,如3.14159 → "3.14") -
%,d:添加千位分隔符(如1000000 → "1,000,000")
处理 null 和异常注意事项
String.format 对 null 值较宽容:%s 会输出 "null" 字符串;但 %d、%f 等数值占位符传入 null 会抛 NullPointerException。建议格式化前校验或使用 Objects.toString(obj, "N/A") 提供默认值。
- 避免运行时异常:数值类型参数确保非 null
- 中文环境注意:某些标志(如
,千分位)依赖默认Locale,如需固定行为,推荐显式传入Locale.US - 完整调用示例:
String.format(Locale.US, "金额:%,.2f 元,时间:%tY-%<em>tm-%</em>td", 12345.678, new Date())
替代方案对比:何时不用 format?
简单拼接优先用 String.join() 或文本块;高频拼接考虑 StringBuilder;Java 15+ 可用 formatted() 实例方法(如 "%s: %d".formatted(name, age)),语义更直观。但跨版本兼容性、复杂格式需求(对齐、本地化、复用参数)仍以 String.format 最稳妥。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










