Java中奇怪的printf()行为

时间:2011-03-27 21:29:19

标签: java printf string-formatting

我有以下代码片段

System.out.printf("%b\n", 123);

打印“true”。

有人可以解释这种行为吗?不应该抛出IllegalFormatException吗?

2 个答案:

答案 0 :(得分:3)

因为规范说:

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

这种行为很有可能不是吗?为什么他们决定以这种方式实现它 - 不知道,我同意它不直观(但它遵循C,如果你给它错误的参数,它也会打印任何东西;)

答案 1 :(得分:2)

来自JavaDocs:

  

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

您提供的参数不是nullbooleanBoolean,因此它属于“其他”,因此为true