我只是寫了代碼:JAVA布爾構造函數給出意想不到的結果
Boolean b1 = new Boolean("programmer");
Boolean b2 = new Boolean("tester");
System.out.println(b1.equals(b2));
它打印true
作爲輸出中。 爲什麼?
根據JAVA文檔
new Boolean(String)
:分配一個表示值真布爾對象如果字符串參數不是null和是相等的,忽略 情況下,將字符串「真」。
我只是寫了代碼:JAVA布爾構造函數給出意想不到的結果
Boolean b1 = new Boolean("programmer");
Boolean b2 = new Boolean("tester");
System.out.println(b1.equals(b2));
它打印true
作爲輸出中。 爲什麼?
根據JAVA文檔
new Boolean(String)
:分配一個表示值真布爾對象如果字符串參數不是null和是相等的,忽略 情況下,將字符串「真」。
Boolean b1 = new Boolean("programmer"); // false
Boolean b2 = new Boolean("tester"); // false
因此測試false == false
是true
。
從
public Boolean(String s)
constructor signature:
Boolean.parseBoolean("True")
回報true
- 布爾
Boolean.parseBoolean("yes")
回報false
無論您b1
和b2
是Boolean.FALSE
,因此他們是平等的。
只有字符串爲"true"
(忽略大小寫)new Boolean(String)
爲TRUE
。
下面是Boolean
構造:
public Boolean(String s) {
this(parseBoolean(s));
}
而且parseBoolean
方法:
public static boolean parseBoolean(String s) {
return ((s != null) && s.equalsIgnoreCase("true"));
}
默認值爲false ..和你的情況
Boolean b1 = new Boolean("programmer"); // false
System.out.println(b1);
Boolean b2 = new Boolean("tester"); // false
System.out.println(b2);
所以false == false
總是返回true
除此之外,如果你想比較,你有串給定,那麼你應該使用String
包裝類。
這兩個布爾人都是假的,因此他們是平等的,你的等號檢查會打印出真實的。這裏沒有什麼意外的。 –
請仔細閱讀最後一句。它給你的理由。 – Guy
因爲「如果字符串參數不爲空並且等於(忽略大小寫)爲字符串」true「,則分配表示值爲true的布爾對象。」其他任何東西都是假的。 –