布尔类的getBoolean(String str)和valueOf(String str)给出不同的输出

我很惊讶地知道getBoolean()valueOf()方法为同一个inputstring返回不同的结果。

我试图把这两个方法都传给"true" 。 但getBoolean()给我错误的输出,而valueOf()给我正确的输出。 为什么?

API文档是你的朋友。

  • Boolean.getBoolean可能不会做你认为的事情:

    当且仅当由参数命名的系统属性存在且等于string“true”时才返回true。

  • Boolean.valueOf可能是你要找的东西:

    如果string参数不为空,并且与string“true”相等(忽略大小写),则返回的布尔值表示值true。

getBoolean的javadoc明确声明它search系统属性。 传递给它的值是系统属性的名称,而不是“真”或“假”string。

例如`var b = Boolean.getBoolean(“some.property”);

在使用Boolean.getBoolean()时,我最近也发现了这个问题。 另外,如果你想有一个空的检查,你可以使用Boolean.parseBoolean在空值的情况下返回false

 class Boo1 { public static void main(String[] args) { System.setProperty("true","true"); System.setProperty("false","true"); boolean d=Boolean.getBoolean("true"); System.out.println(d); } }