String.format("%03d", number)可生成三位补零字符串,如1→"001";%03d中d表示十进制整数,3为最小宽度,0表示左补零;常用于循环或自增变量生成序列号。

用 String.format("%03d", number) 可以轻松生成三位补零的数字字符串,比如 1 → "001",42 → "042",123 → "123"。关键在于把递增的整数变量传进去,再配合循环或计数逻辑即可生成序列号。
理解 %03d 的含义
%03d 是 Java 中的格式化占位符,其中:
- d 表示十进制整数(decimal)
- 3 表示最小宽度为 3 位
- 0 表示不足位时用字符 '0' 左侧填充
所以 String.format("%03d", 5) 结果是 "005",String.format("%03d", 100) 是 "100"(不截断,只补零不扩位)。
生成自动递增序列号的基本写法
只需定义一个起始整数,每次调用前自增,再格式化:
int seq = 1;
String serial = String.format("%03d", seq++); // 得到 "001",seq 变成 2
String next = String.format("%03d", seq++); // 得到 "002"
更常见的是在循环中使用:
for (int i = 1; i <= 10; i++) {
String serialNo = String.format("%03d", i);
System.out.println(serialNo); // 输出:001, 002, ..., 010
}
实际应用中的扩展建议
纯数字序列号在真实业务中常需加前缀、时间戳或校验位。例如:
- 带固定前缀:
String.format("ORD-%03d", orderId)→ "ORD-042" - 结合年份:
String.format("PO2024-%03d", counter)→ "PO2024-007" - 避免多线程冲突:若并发生成,用
AtomicInteger替代普通int - 超限处理:三位最多支持 001–999;如需更大范围,改用
%04d或动态计算位数
注意事项
注意几个易错点:
- 参数必须是
int或可自动拆箱的Integer,传入String或null会抛IllegalFormatConversionException - 负数也会补零,如
String.format("%03d", -7)得到"-07"(符号占一位,只剩两位补零);如需绝对值或禁止负数,应提前校验 - 如果序列号需持久化(如存数据库),确保递增逻辑是线程安全且不重复的,不能仅依赖本地变量

















