我有以下代码片段
System.out.printf("%b\n", 123);
打印“true”。
有人可以解释这种行为吗?不应该抛出IllegalFormatException吗?
答案 0 :(得分:3)
因为规范说:
“如果参数arg为null,则结果为”false“。如果arg是布尔值或布尔值,则结果是String.valueOf()返回的字符串。否则,结果为”true“。 “(src)
这种行为很有可能不是吗?为什么他们决定以这种方式实现它 - 不知道,我同意它不直观(但它遵循C,如果你给它错误的参数,它也会打印任何东西;)
答案 1 :(得分:2)
来自JavaDocs:
如果参数arg为null,则结果为“false”。如果arg是布尔值或布尔值,则结果是String.valueOf()返回的字符串。否则,结果为“true”。
您提供的参数不是null
,boolean
或Boolean
,因此它属于“其他”,因此为true