我很驚訝地發現getBoolean()
和valueOf()
方法爲相同的輸入字符串返回不同的結果。布爾類的getBoolean(String str)和valueOf(String str)給出不同的輸出
我試圖通過"true"
兩種方法。但getBoolean()
給我錯誤的輸出,而valueOf()
給我正確的輸出。爲什麼?
我很驚訝地發現getBoolean()
和valueOf()
方法爲相同的輸入字符串返回不同的結果。布爾類的getBoolean(String str)和valueOf(String str)給出不同的輸出
我試圖通過"true"
兩種方法。但getBoolean()
給我錯誤的輸出,而valueOf()
給我正確的輸出。爲什麼?
The API-documentation is your friend.
Boolean.getBoolean
可能不會做你認爲它的作用:
返回true當且僅當以參數命名的system property存在,等於字符串「真」。
Boolean.valueOf
可能是你在找什麼:
布爾代表返回true值如果字符串參數不爲null並忽略大小寫字符串「true」。
getBoolean的javadoc明確規定,它搜索系統屬性。您傳遞給它的值是系統屬性的名稱,而不是「真」或「假」字符串。
例如,var b = Boolean.getBoolean(「some.property」);
我最近在使用Boolean.getBoolean()時也發現了這個問題。另外,如果你想有一個空檢查您可以使用Boolean.parseBoolean將在空的情況下
使用Boolean.getBoolean(「property.name」)加載系統屬性時,不需要擔心空值。該API清楚地談到它。當且僅當參數指定的系統屬性存在並且等於字符串「true」(不區分大小寫)時,此API返回true。否則返回「false」。 – HIREN011 2016-06-20 17:41:49
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);
}
}
請閱讀[回覆] – 2014-09-11 18:13:23
相關返回false:http://marxsoftware.blogspot.com/2009/12/java-booleans- getboolean-useful-if-not.html – 2011-04-07 12:29:15
這是什麼語言?如果是Java,請注意'getBoolean'的參數不是表示布爾值的字符串;它是一個命名系統屬性的字符串,其值應該是表示布爾值的字符串。 – 2011-04-07 12:29:31