Java的格式化输出等同于C中的String.Format比如System.out.printf("%8.2f", x);
转换符 类型 举例
d 十进制整数 159
x 十六进制整数 9f
o 八进制整数 237
f 定点浮点数 15.9
e 指数浮点数 1.59e+01
g 通常浮点数
a 十六进制浮点数 0x1.fccdp3
s 字符串 Hello
c 字符 H
b 布尔型 TRue
h 散列码 42628b2
tx 日期时间 见时间介绍表
% 百分号 %
F ISO 8601 日期 2004-02-09
D 美国时间格式 (mm/dd/year) 02/09/2004
T 24小时时间 18:05:19
r 12小时时间 06:05:19 pm
R 24小时无秒时间 18:05
Y 四位年 2004
y 年的后两位 04
C 年的前两位 20
B 月的完整拼写 February
b or h 月的缩写 Feb
m 两位月(前补0) 02
d 两位日(前补0) 09
e 日期(前不补0) 9
A 完整星期几 Monday
a 星期几的缩写 Mon
j 这一年的第多少天,三位补0 069
H 24小时制小时,两位补0 18
k 24小时制小时,两位不补0 18
I 12小时制小时,两位补0 06
l 12小时制小时,两位不补0 6
M 分钟,两位补0 05
S 秒,两位补0 19
L 毫秒,三位补0 047
N 毫微秒,九位补0 047000000
P 上下午大写 PM
p 上下午小写 pm
z RFC 822 numeric offset from GMT -0800
Z 时区 PST
s 1970-01-01 00:00:00起秒数 1078884319
space 在正数之前加空格 | 3333.33|
0 在数字前补0 003333.33
- 左对齐 |3333.33 |
( 负数括在括号内 (3333.33)
, 添加分组分隔符 3,333.33
# (for f ) 包含小数点 3,333.
# (for x or o) 添加前缀 0x 或 0 0xcafe
^ 转化为大写 0XCAFE
$ 指定格式化参数索引,如%1$d,%1$d表示以十进制和十六进制打印第一个参数 159 9F
< 格式化前面参数,如%d%<x表示以十进制和十六进制打印同一个参数 159 9F
在printf中,可以使用多个参数,例如:System.out.printf("Hello, %s. Next year, you'll be %d", name, age);
支持多个参数时,可以在%s之间插入变量编号,1$表示第一个字符串,2$表示第2个字符串
转换符 类型 举例
d 十进制整数 159
x 十六进制整数 9f
o 八进制整数 237
f 定点浮点数 15.9
e 指数浮点数 1.59e+01
g 通常浮点数
a 十六进制浮点数 0x1.fccdp3
s 字符串 Hello
c 字符 H
b 布尔型 TRue
h 散列码 42628b2
tx 日期时间 见时间介绍表
% 百分号 %
n 分隔符
时间日期的转换符如下:
转换符 类型 举例
C 完整日期和时间 Mon Feb 09 18:05:19 PST 2004F ISO 8601 日期 2004-02-09
D 美国时间格式 (mm/dd/year) 02/09/2004
T 24小时时间 18:05:19
r 12小时时间 06:05:19 pm
R 24小时无秒时间 18:05
Y 四位年 2004
y 年的后两位 04
C 年的前两位 20
B 月的完整拼写 February
b or h 月的缩写 Feb
m 两位月(前补0) 02
d 两位日(前补0) 09
e 日期(前不补0) 9
A 完整星期几 Monday
a 星期几的缩写 Mon
j 这一年的第多少天,三位补0 069
H 24小时制小时,两位补0 18
k 24小时制小时,两位不补0 18
I 12小时制小时,两位补0 06
l 12小时制小时,两位不补0 6
M 分钟,两位补0 05
S 秒,两位补0 19
L 毫秒,三位补0 047
N 毫微秒,九位补0 047000000
P 上下午大写 PM
p 上下午小写 pm
z RFC 822 numeric offset from GMT -0800
Z 时区 PST
s 1970-01-01 00:00:00起秒数 1078884319
E 1970-01-01 00:00:00起毫秒数 1078884319047
例如:
Integer a = 11;
System.out.printf("%d;%d;%d%n",500,2345L,a);//%d表示将整数格式化为10进制整数
在printf函数中,可以使用多个标志,如:System.out.printf("%,.2f", 10000.0 / 3.0);
用于printf的标志如下表
标志 目的 举例
+ 打印数字前的符号 +3333.33space 在正数之前加空格 | 3333.33|
0 在数字前补0 003333.33
- 左对齐 |3333.33 |
( 负数括在括号内 (3333.33)
, 添加分组分隔符 3,333.33
# (for f ) 包含小数点 3,333.
# (for x or o) 添加前缀 0x 或 0 0xcafe
^ 转化为大写 0XCAFE
$ 指定格式化参数索引,如%1$d,%1$d表示以十进制和十六进制打印第一个参数 159 9F
< 格式化前面参数,如%d%<x表示以十进制和十六进制打印同一个参数 159 9F