java 核心技术 3.7.2 格式化输出

3.7.2 格式化输出

之前我们已经了解到,可以使用标准输出流输出数值。比如,System.out.print(x) ,可以将数值x 以它的类型所能表述的最大非0位数打印。比如

double x = 10000/ 3.0;

System.out.print(x) ; // 打印结果为 3333.3333333333335

如果希望显示的是钱,这种显示方式就不太好了。

这个问题可以用printf 来解决,Java这里的设计沿用了C语言函数库中的古老约定。例如,System.out.printf(“%8.2f”,x);

这句代码表示,字段宽度(field width )为8个字符,精度为2个字符。也就是,结果包含一个签到的空格和7个字符,结果为 3333.33 。 注意,这里的8值得是最小宽度,也就是如果不足8位,会在前面补空格,如果是超过8位,就正常显示。


可以为printf提供多个参数,例如

System.out.printf(“Hello, %s. Next year, you'll be %d” , name, age);

每一个以 % 字符开头的格式说明符(format specifiers) 都替换为相应的参数。格式说明符末尾的转换字符(conversion character) 指示要格式化的数值的类型: f 表示浮点数,s表示字符串,d表示十进制整数。

大写形式会生成大写字母。例如, “%8.2E”将3333.33格式化为 3.33E+03,这里有一个大写的E

注释

可以使用s 转换字符格式化任意对象。如果一个任意对象实现了Formattable接口,会调用这个对象的formatTo方法。否则,会调用toString 方法将这个对象转换为一个字符串。

toString 会在第5章讨论

接口将在第6章介绍

另外,还可以指定控制格式化输出外观的各种标志(flag)。下表列出了用于printf的标志。例如,逗号标志会增加分组分隔符。即 System.out.printf(“%,.2f”,10000/3.0); 打印输出为 3,333.33

可以使用多个标志,例如,“%, ( .2f” 会使用分组分隔符,并将负数包围在括号内。

可以使用静态的String.format 方法创建一个格式化的字符串而不是打印输出。

String message = String.format(“Hello, %s, Next year, you'll be %d” , name, age+1);

注释:在Java 15中,可以使用 formatted 方法,这样可以少敲5个字符:

String message = “Hello, %s, Next year, you'll be %d”.formatted(name, age+1);



注释:格式化规则是特定于 “本地化环境”的,例如,在德国,分组分隔符是点号而不是逗号。在卷2第7章中将介绍如何控制应用的国际化行为。

展开阅读全文

页面更新:2024-05-07

标签:说明符   逗号   字符串   数值   注释   字符   标志   对象   格式   方法

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top