概要: 本文通过实例详细介绍Java格式化输出 System.out.printf() 方法的使用、参数的含义、格式转换符使用时的注意事项。
System.out.printf() 是 Java 5 开始引入的,用法类似 C语言的 printf() 函数,但注意存在一定差异。
1. printf API
// 使用指定的格式字符串和参数将格式化字符串写入入到输出流
public PrintStream printf(String format, Object ... args)
// 基于本地化环境使用指定的格式字符串和参数将格式化字符串写入到输出流
public PrintStream printf(Locale l, String format, Object ... args)
以上2个方法,当 format 为 null 时,抛出 NPE.
2. 参数说明
1. format
format 是以百分号(%) 开头的格式说明字符串,具体格式如下
%[argument_index$][flags][width][.precision]conversion
可选的 argument_index 是十进制整数,表示参数列表中参数的位置。 第一个参数由“ 1$ ”引用,第二个由“ 2$ ” 引用 ,等等。 argument_index 必须紧跟%后面,并以$ 结束。
note: 参数索引值从1开始,而不是从0开始,%1$ 对第一个参数格式化。这就避免了与0标志混淆。
可选 flags 指定格式化输出外观的各种标志。 有效标志集取决于 conversion。
可选 width是正十进制整数,表示要写入到输出的字符个数(注意对于浮点数:也包含小数点所占的1个字和 负数的负号所占的1个字符)。 当实际字符数小于指定的宽度时,最前面用 flags 指定的标志填充(若未指定,默认用空格)。
eg: v=2.3, %5.2f 输出5.20,且前面包含1个空格。共打印5个字符,整数位1个5,1个小数点,2个精度,长度为4,比指定的宽度少1为,用1个前导空格代替。
可选 precision 是一个非负十进制整数,通常用于限制字符数。 具体行为取决于转换。
conversion (必需) 是一个字符,指示如何格式化参数。 给定参数的有效转换集取决于参数的数据类型。
表1-用于printf flags(标志) 说明
标志
目的
示例
+
打印正数和负数的符号
+3333.33