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