本帖最后由 Morgan 于 2015-7-4 10:51 编辑
1.其实调用printf(Stringformat, Object... args)就相当于调用format(String format, Object... args)函数。 调用printf(Locale l, String format, Object... args) 就相当于调用format(Localel, String format, Object... args)函数。 2.格式字符串format的语法:
- 常规类型、字符类型和数值类型的格式说明符的语法如下:
%[argument_index$][flags][width][.precision]conversion 可选的 argument_index 是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。 可选 flags 是修改输出格式的字符集。有效标志集取决于转换类型。 可选 width 是一个非负十进制整数,表明要向输出中写入的最少字符数。 可选 precision 是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。 所需 conversion 是一个表明应该如何格式化参数的字符。给定参数的有效转换集取决于参数的数据类型。 %[argument_index$][flags][width]conversion 可选的 argument_index、flags 和 width 的定义同上。 所需的 conversion 是一个由两字符组成的序列。第一个字符是't' 或 'T'。第二个字符表明所使用的格式。这些字符类似于但不完全等同于那些由 GNU date 和 POSIX strftime(3c) 定义的字符。 %[flags][width]conversion 可选 flags 和 width 的定义同上。 所需的 conversion 是一个表明要在输出中所插内容的字符。 转换 | 参数类别 | 说明 | 'b', 'B' | 常规 | 如果参数 arg 为 null,则结果为 "false"。如果 arg 是一个 boolean 值或 Boolean,则结果为 String.valueOf() 返回的字符串。否则结果为"true"。 | 'h', 'H' | 常规 | 如果参数 arg 为 null,则结果为 "null"。否则,结果为调用 Integer.toHexString(arg.hashCode()) 得到的结果。 | 's', 'S' | 常规 | 如果参数 arg 为 null,则结果为 "null"。如果 arg 实现 Formattable,则调用 arg.formatTo。否则,结果为调用 arg.toString() 得到的结果。 | 'c', 'C' | 字符 | 结果是一个 Unicode 字符 | 'd' | 整数 | 结果被格式化为十进制整数 | 'o' | 整数 | 结果被格式化为八进制整数 | 'x', 'X' | 整数 | 结果被格式化为十六进制整数 | 'e', 'E' | 浮点 | 结果被格式化为用计算机科学记数法表示的十进制数 | 'f' | 浮点 | 结果被格式化为十进制数 | 'g', 'G' | 浮点 | 根据精度和舍入运算后的值,使用计算机科学记数形式或十进制格式对结果进行格式化。 | 'a', 'A' | 浮点 | 结果被格式化为带有效位数和指数的十六进制浮点数 | 't', 'T' | 日期/时间 | 日期和时间转换字符的前缀。请参阅日期/时间转换。 | '%' | 百分比 | 结果为字面值 '%' ('\u0025') | 'n' | 行分隔符 | 结果为特定于平台的行分隔符 |
任何未明确定义为转换的字符都是非法字符,并且都被保留,以供将来扩展使用。
3.下面举一个例子 System.out.format("%1$3d",var); %:是标志符。 1$:表示转换逗号后面第一个参数。 3:表示最小宽度是3. d:表示结果被格式化为十进制整数。
|