String.format 是 Java 中通过占位符格式化字符串的方法,支持 %s、%d、%f 等类型匹配及宽度、对齐、精度等控制,需注意类型匹配、null 处理与参数数量一致。

String.format 是 Java 中格式化字符串的常用方法,它类似 C 语言的 printf,通过占位符和参数配合,生成格式化后的字符串(不直接打印,而是返回新字符串)。
基本语法和占位符
调用形式为:String.format(格式字符串, 参数1, 参数2, ...)。格式字符串中用 % 开头的占位符匹配后续参数。
-
%s:匹配任意对象,调用其toString()(最常用,适用于字符串、数字、自定义对象等) -
%d:匹配整数类型(int,long等) -
%f:匹配浮点数(float,double) -
%c:匹配单个字符(char) -
%b:匹配布尔值(boolean),输出true或false
例如:String s = String.format("姓名:%s,年龄:%d,身高:%.2f", "张三", 25, 175.678);
结果为:"姓名:张三,年龄:25,身高:175.68"(%.2f 表示保留两位小数,自动四舍五入)。
常见格式控制技巧
占位符可加入宽度、对齐、精度等修饰符,写在 % 和类型字母之间:
-
%10s:字符串右对齐,总宽至少 10 个字符,不足补空格 -
%-10s:左对齐(加负号) -
%05d:整数右对齐,不足 5 位时左边补 0(如%05d格式化42→"00042") -
%.3f:浮点数保留 3 位小数 -
%,d:添加千位分隔符(如%,d格式化1000000→"1,000,000")
处理 null 和异常注意事项
如果传入 null 给 %s,结果是字符串 "null"(不会抛异常);但传给 %d 或 %f 会抛 IllegalFormatConversionException。
立即学习“Java免费学习笔记(深入)”;
- 避免类型错配:确保参数类型与占位符一致,或能被自动转换(如
Integer可用于%d) - 参数数量要匹配:占位符个数必须等于参数个数,否则抛
MissingFormatArgumentException或TooManyArgumentsException - 中文环境建议显式指定
Locale(如String.format(Locale.CHINA, "%.2f", 3.1415)),避免某些系统默认 locale 导致小数点或千分位异常
替代方案与使用建议
Java 15+ 支持文本块 + formatted() 实例方法,更简洁:
-
"姓名:%s,年龄:%d".formatted("李四", 30)—— 效果同String.format(...),但更直观 - 若需重复格式化,可考虑
java.util.Formatter类复用缓冲区(较少见) - 简单拼接优先用
String.join()或+;复杂模板或国际化场景建议用MessageFormat
日常开发中,String.format 适合日志记录、SQL 拼装(注意防注入!)、调试信息生成等需要可控格式的场合。


















