java运算符和布尔操作数的独占

时间:2013-06-17 13:27:22

标签: java

任何人都可以告诉我为什么打印1? 我肯定知道真假和EXCLUSIVE给出0.为什么它进入if语句?

 public static void main(String[] args) {
    boolean a=true, b=false; 
    int i=0; 
    if(a^b)   {
        i++;
    } 
    System.out.print(i++);
 }
谢谢你!

5 个答案:

答案 0 :(得分:5)

您正在使用xor:^

true ^ false == true

另见:

我实际上不确定你的意思是“独家和”。另见:

答案 1 :(得分:2)

xor tables

0^0 == 0
0^1 == 1
1^0 == 1
1^1 == 0

所以它进入了if语句。

在主要版块的末尾,System.out.println(i++)i变量将具有当前编写的值2

答案 2 :(得分:0)

如果您谈论^,则它是独占的。对于任何命题p1和p2,只有当p1或p2中的一个为真时,p1 ^ p2才为真

因此打印1是正常的。

答案 3 :(得分:0)

在Java中,^运算符是按位异或,而不是独占AND。由于true XOR false为TRUE,因此它将输入if子句。

如果您正在处理==,我建议您只使用!=boolean运算符。

答案 4 :(得分:0)

^运算符为exclusive or。真相表是

 XOR  | false true 
-------------------
false | false true
true  | true  false

这就是为什么你得到“1” - 你的if语句评估为真。

干杯,