//#要放在%后,o或X前
public class Main{
    public static void main(String[] args){
        int a = 1234;
        System.out.printf("%#o",a);
        System.out.printf(" %#X",a);
    }
}

1. printf API

// 使用指定的格式字符串和参数将格式化字符串写入入到输出流

public PrintStream printf(String format, Object ... args)

2. 参数说明

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 (必需) 是一个字符,指示如何格式化参数。 给定参数的有效转换集取决于参数的数据类型。

用于printf flags(标志) 说明

#(对于x或o格式) 添加前缀0x或0

用于printf conversion(转换符) 说明

x 十六进制整数
o 八进制整数