可以使用System.out.print(x)将数值x输出到控制台上。这条命令将以x对应的数据类型所允许的最大非0数字位数打印输出x。例如:
double x = 10000.0 / 3;
System.out.println(x); // 3333.3333333333335
Java SE 5.0沿用了C语言库函数中的printf方法。例如,调用
double x = 10000.0 / 3;
System.out.printf("%8.2f",x); // 3333.33
double x1 = 10000000000.0 / 3;
System.out.printf("%8.2f",x1); // 3333333333.33
%8.2f的含义是可以用8个字符的宽度和小数点后两个字符的精度打印x。也就是说,打印输出一个空格和7个字符(包括小数点)。当然,如果结果的总位数超过8,还是整数部分按实际展示,小数部分还是只显示2位。
在printf中,可以使用多个参数,例如:
System.out.printf("Hello,%s. Next year . you'll be %d", name, age);
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的姓名");
String name = sc.nextLine();
System.out.println("请输入您的年龄");
int age = sc.nextInt();
System.out.printf("Hello, %s. Next year . you'll be %d .", name, age);
每一个以%字符开始的格式说明符都用相应的参数替换。
转换符
|
类型
|
举例
|
d
|
十进制整数
|
159
|
x
|
十六进制整数
|
9f
|
o
|
八进制整数
|
237
|
f
|
定点浮点数 |
15.9
|
e
|
指数浮点数
|
1.59e+01
|
g |
通用浮点数
|
1537.00
|
a
|
十六进制浮点数
|
0x1.fccdp3
|
s
|
字符串
|
Hello
|
c
|
字符
|
H
|
b
|
布尔
|
True
|
h
|
散列码
|
42628b2
|
tx或Tx
|
日期时间
|
已经过时,应当改为使用java.time类
|
%
|
百分号
|
%
|
n
|
与平台有关的行分隔符
|
--
|
另外,还可以给出控制格式化输入的各种标志。例如,逗号标志增加了分组的分隔符。
标志
|
目的
|
举例
|
+
|
打印正数和负数的符号"%+f",e
|
|
空格
|
在正数之前添加空格"% 10d",e
|
| 3333.33|
|
0
|
数字前面补0"%010d",e
|
003333.33
|
-
|
左对齐
|
|3333.33 |
|
(
|
将负数括在括号内
|
(3333.33)
|
,
|
添加分组分隔符
|
3,333.33
|
#(对于f格式)
|
包含小数点
|
3,333.
|
#(对于x或0格式)
|
添加前缀0x或0
|
0xcafe
|
$
|
给定被格式化的参数索引。例如,%1$d, %1$x将以十进制和十六进制格式打印第一个参数"%1$x",e
|
159 9f
|
<
|
格式化前面说明的数值,例如,%d%<x以十进制和十六进制打印同一个数值"%d %<x",e
|
159 9f
|
注释:可以使用s转换符格式化任意的对象。对于任意实现了Formattable接口的对象都将调用formatTo方法;否则将调用toString方法,它可以将对象转换为字符串。