String.format 是 Java 中类似 C 语言 printf 的字符串格式化方法,通过占位符(如 %d、%f、%s)配合修饰符(宽度、精度、对齐等)控制输出样式,支持多参数绑定与复用,需注意类型匹配和 Locale 设置。

String.format 是 Java 中用于格式化字符串的静态方法,它支持多种数据类型(如 int、double、boolean、String、Date 等),用法类似 C 语言的 printf。核心是通过占位符(格式说明符)控制输出样式,再传入对应类型的参数。
常用格式说明符与对应数据类型
每个占位符以 % 开头,后接可选修饰符和必需的转换符。常见组合如下:
-
%d:十进制整数(int、long、short、byte) -
%f:浮点数(float、double),默认保留6位小数 -
%s:任意对象(调用toString(),适用于String、Integer、自定义对象等) -
%b:布尔值(boolean,true输出true,false或null输出false) -
%c:字符(char或int表示的 Unicode 码点) -
%tY-%<em>tm</em>-%<em>td</em>或%1$tF:日期时间(需传入Date或Calendar,推荐用java.time配合DateTimeFormatter,但String.format原生支持有限)
控制精度、宽度与对齐
可在 % 和转换符之间添加修饰符,提升输出可控性:
-
%5d:最小宽度为 5,右对齐,不足补空格(如42→" 42") -
%05d:最小宽度为 5,右对齐,不足补 0(如42→"00042") -
%.2f:保留 2 位小数(如3.14159→"3.14") -
%-10s:最小宽度 10,左对齐(-表示左对齐) -
%,d:添加千位分隔符(如1000000→"1,000,000")
处理多个参数与复用参数
参数按位置依次绑定,也可用索引显式指定,避免重复或调整顺序:
立即学习“Java免费学习笔记(深入)”;
- 按顺序:
String.format("姓名:%s,年龄:%d", "张三", 25)→"姓名:张三,年龄:25" - 复用同一参数:
String.format("%1$s 的分数是 %2$d,%1$s 得了满分", "李四", 100)→"李四 的分数是 100,李四 得了满分" - 跳过参数(不常用):
%2$d %1$s表示先取第 2 个参数,再取第 1 个
注意事项与常见问题
使用时需注意类型匹配和异常风险:
- 类型不匹配会抛
IllegalFormatConversionException(如用%d格式化String) - 参数数量不足抛
MissingFormatArgumentException;过多则忽略多余参数 -
null传给%s会输出"null"字符串,不会 NPE;但传给%d或%f会报错 - 中文环境下注意区域设置影响(如小数点、千分位符),可显式传入
Locale:String.format(Locale.US, "%.2f", 3.1415)


















