Java Boolean类的getBoolean(String str)和valueOf(String str)给出不同的输出
我很惊讶地知道Java Boolean类的getBoolean(String str)和valueOf(String str)给出不同的输出,java,boolean,Java,Boolean,我很惊讶地知道getBoolean()和valueOf()方法为相同的输入字符串返回不同的结果 我已尝试将“true”传递给这两个方法。但是getBoolean()给了我错误的输出,而valueOf()给了我正确的输出。为什么? 可能不会像你认为的那样: 当且仅当参数指定的值存在且等于字符串“true”时,返回true 可能就是您要找的: 如果字符串参数不为null,并且忽略大小写,与字符串“true”相等,则返回的布尔值表示值true 的getBoolean函数明确声明它搜索系统属
getBoolean()
和valueOf()
方法为相同的输入字符串返回不同的结果
我已尝试将“true”
传递给这两个方法。但是getBoolean()
给了我错误的输出,而valueOf()
给了我正确的输出。为什么?- 可能不会像你认为的那样: 当且仅当参数指定的值存在且等于字符串“true”时,返回true
- 可能就是您要找的:
如果字符串参数不为null,并且忽略大小写,与字符串“true”相等,则返回的布尔值表示值true
例如,`var b=Boolean.getBoolean(“some.property”) 我最近在使用Boolean.getBoolean()时也发现了这个问题。此外,如果要进行空检查,可以使用Boolean.parseBoolean,如果为空,它将返回false。getBoolean必须是java中最差的方法。一个大的WTF
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);
}
}
为什么不把它放在系统
或属性
或其他什么地方
所以要回答您的问题-是的,这是一件非常令人困惑的事情,您只需单击IDE中的方法即可查看代码或阅读javadoc
以下是源代码:
public static boolean getBoolean(String name) {
boolean result = false;
try {
result = toBoolean(System.getProperty(name));
} catch (IllegalArgumentException e) {
} catch (NullPointerException e) {
}
return result;
}
相关:这是什么语言?如果是Java,请注意
getBoolean
的参数不是表示布尔值的字符串;它是一个命名系统属性的字符串,其值应该是表示布尔值的字符串。当使用Boolean.getBoolean(“property.name”)加载系统属性时,无需担心空值。API清楚地谈到了这一点。当且仅当由参数命名的系统属性存在且等于字符串“true”(不区分大小写)时,此API才会返回true。否则它将返回“false”。Boolean.getBoolean
必须是最愚蠢的方法最糟糕的方法