Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Boolean类的getBoolean(String str)和valueOf(String str)给出不同的输出_Java_Boolean - Fatal编程技术网

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

的getBoolean函数明确声明它搜索系统属性。传递给它的值是系统属性的名称,而不是“true”或“false”字符串


例如,`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
必须是最愚蠢的方法最糟糕的方法