java中string.format()的格式化符号如%s、%d是内置说明符,无需配置;%s通用(调用tostring),%d仅限整数;支持宽度、对齐、精度等修饰符;需参数数量与类型严格匹配。

Java 中 String.format() 的格式化符号(如 %s、%d)不需要“配置”,它们是 Java 内置的格式说明符,直接按规则使用即可。关键在于理解每个符号的含义和正确搭配参数类型。
%s 用于字符串和任意对象
%s 表示将对应参数调用 toString() 后插入。它最通用,支持 String、数字、布尔值、自定义对象等。
-
String.format("姓名:%s", "张三")→"姓名:张三" -
String.format("年龄:%s", 25)→"年龄:25"(自动转字符串) -
String.format("状态:%s", true)→"状态:true"
%d 专用于整数类型
%d 只接受整型数值(int、long、short、byte),不能传 String 或 double,否则运行时报 IllegalFormatConversionException。
-
String.format("数量:%d", 100)→"数量:100" -
String.format("ID:%d", 123456789L)→ ✅ 支持long -
String.format("价格:%d", 99.9)→ ❌ 报错,应改用%f或先取整
常见组合与占位控制
可在 % 和字母之间添加修饰符,实现对齐、补零、宽度限制等效果:
-
%5s:最小宽度为 5,右对齐(不足左补空格) -
%-5s:最小宽度为 5,左对齐 -
%05d:整数不足 5 位时,左边补 0(如%05d+42→"00042") -
%.2f:浮点数保留 2 位小数(%f用于double/float)
安全建议与注意事项
使用时需确保参数个数与格式符数量一致,且类型匹配:
- 参数过多会被忽略;参数不足会抛
MissingFormatArgumentException - 避免硬编码复杂格式,可提取为常量或使用
MessageFormat处理多语言场景 - 日志中推荐用 SLF4J 的
logger.info("用户 {} 登录,耗时 {}ms", name, time),更安全且延迟格式化
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











