System.out.printf()的用法

时间:2018-07-01 11:13:12

标签: java string formatting

我是Java新手。在学习printf方法时,我遇到了以下问题:

以下程序的输出是什么?

System.out.printf("%1$d + %b", 456, false);
System.out.println();
System.out.printf("%1$d + %b", 456);

答案是:

456 + true
456 + true

有人可以帮助我了解在没有我通过的情况下打印出真实的纸张吗?

1 个答案:

答案 0 :(得分:7)

1$被称为显式索引%1$d的连续格式不会导致索引的增加,因此也将使用456进行格式化%b,并根据doc

  

如果参数arg为null,则结果为“ false”。如果arg是一个   布尔值或布尔值,则结果是的返回字符串   String.valueOf(arg)。否则,结果为“ true”。

这就是为什么您总是得到true的原因。

要弄虚作假:

System.out.printf("%1$d + %b", null); // null + false

或删除显式索引:

System.out.printf("%d + %b", 456, null); // 456 + false

查看java.uti.Formatter的文档以了解更多信息。