带布尔操作数的java运算符和排他运算符

带布尔操作数的java运算符和排他运算符,java,Java,有人能告诉我为什么打印出1吗? 我确信,真与假、互斥等于0。为什么它进入if语句 public static void main(String[] args) { boolean a=true, b=false; int i=0; if(a^b) { i++; } System.out.print(i++); } 谢谢大家! 您正在使用xor:^ true ^ false == true 另见: 我真的不知道你说的

有人能告诉我为什么打印出1吗? 我确信,真与假、互斥等于0。为什么它进入if语句

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

谢谢大家!

您正在使用xor:
^

true ^ false == true
另见:

我真的不知道你说的“排他性”和“非排他性”是什么意思。另见:


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

因此,它打印1.

异或表是正常的

0^0 == 0
0^1 == 1
1^0 == 1
1^1 == 0
因此它进入if语句


在主块的末尾,在
System.out.println(i++)
之后,
i
变量的值将为
2
,与当前在Java中编写的值相同

^
运算符是按位排他或,而不是排他和。由于
true或XOR false
为true,因此它进入if子句


我建议您只需使用
==
=运算符,如果您处理的是
boolean

已禁用
^
运算符。这方面的真值表是

 XOR  | false true 
-------------------
false | false true
true  | true  false
这就是为什么您得到“1”-如果
语句的计算结果为true,您的


干杯,

实际上它是XOR aka或EXCLUSIVE,它给出了true。在这种情况下,它不是按位排他的OR,而是逻辑排他的OR;)但我了解到,只有当我们有1和1(真,真)时,XOR才会给出真,但在这种情况下,我们有1和0(假)。不是吗?那只是“和”。如
&
&
T&&T==T
T&&F==F
T^T==F
T^F==T