2017-02-21 70 views
0

我只是寫了代碼:JAVA布爾構造函數給出意想不到的結果

Boolean b1 = new Boolean("programmer"); 
Boolean b2 = new Boolean("tester"); 
System.out.println(b1.equals(b2)); 

它打印true作爲輸出中。 爲什麼?

根據JAVA文檔

new Boolean(String):分配一個表示值真布爾對象如果字符串參數不是null和是相等的,忽略 情況下,將字符串「真」。

+1

這兩個布爾人都是假的,因此他們是平等的,你的等號檢查會打印出真實的。這裏沒有什麼意外的。 –

+1

請仔細閱讀最後一句。它給你的理由。 – Guy

+1

因爲「如果字符串參數不爲空並且等於(忽略大小寫)爲字符串」true「,則分配表示值爲true的布爾對象。」其他任何東西都是假的。 –

回答

5
Boolean b1 = new Boolean("programmer"); // false 
Boolean b2 = new Boolean("tester"); // false 

因此測試false == falsetrue


public Boolean(String s) constructor signature

  • Boolean.parseBoolean("True")回報true

  • Boolean.parseBoolean("yes")回報false

  • 布爾
3

無論您b1b2Boolean.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")); 
} 
1

默認值爲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包裝類。

相關問題