System.out.println(""+(3!=3 | 2==2 | 3==1));
// System.out.println(""+(false | true | false));
// System.out.println(""+( true | false));
// System.out.println(""+(true));
System.out.println(""+(3!=3 & 2==2 & 3==1));
// System.out.println(""+(false & true & false));
// System.out.println(""+( false & false));
// System.out.println(""+(false));
System.out.println(""+(3!=3^2==2^3==1));
// System.out.println(""+(false^true^false));
// System.out.println(""+( true ^false));
// System.out.println(""+(true));
引用JLS section 15.22.2,並且知道從左至右表達式進行求值:
對於&
,結果值是true
如果兩個操作數的值都true
;否則,結果是false
。
對於^
,如果操作數值不同,結果值爲true
;否則,結果是false
。
對於|
,如果兩個操作數值均爲false
,則結果值爲false
;否則,結果是true
。
作爲一個側面說明,正確的名稱are:
&
是位睿智。
|
是按位包含的或。
^
是按位獨佔的。
這不是你在這裏使用的按位運算符,而是邏輯xor;按位異或是另一件事 – fge
3.'false^true^false == true'。所有條件都被評估。 – khelwood
關於數字'^'是按位異或。在布爾值上,這是合乎邏輯的xor。 – khelwood