Java的格式化输出等同于String.Format,与C有很大的相似,比如
System.out.printf("%8.2f", x);
在printf中,可以使用多个参数,例如:
System.out.printf("Hello, %s. Next year, you'll be %d", name, age);
用于printf的转换符如下表:
转换符 | 类型 | 举例 |
---|---|---|
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 | 分隔符 |
在printf函数中,可以使用多个标志,如:
System.out.printf("%,.2f", 10000.0 / 3.0);
用于printf的标志如下表
标志 | 目的 | 举例 |
---|---|---|
+ | 打印数字前的符号 | +3333.33 |
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 |
时间日期的转换符如下:
转换符 | 类型 | 举例 |
---|---|---|
C | 完整日期和时间 | Mon Feb 09 18:05:19 PST 2004 |
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 |
E | 1970-01-01 00:00:00起毫秒数 | 1078884319047 |