我是Java新手。在学习printf
方法时,我遇到了以下问题:
以下程序的输出是什么?
System.out.printf("%1$d + %b", 456, false);
System.out.println();
System.out.printf("%1$d + %b", 456);
答案是:
456 + true
456 + true
有人可以帮助我了解在没有我通过的情况下打印出真实的纸张吗?
答案 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
的文档以了解更多信息。