布尔类的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); } }