Java中的逻辑异或运算符是什么?

7
在Java中,有一个逻辑或运算符(||)和一个逻辑与运算符(&&)。是否有一个逻辑异或运算符?我尝试使用^^,但它不起作用。

逻辑异或会做什么?有一种按位异或运算符是^。 - Elliott Frisch
8
逻辑异或运算(A logical_xor B)基本上就是 A != B - nos
1个回答

22

Java中确实存在逻辑异或运算符,其拼写为^

要使用正确的术语,在Java中:

  • &|^分别称为基于位的或逻辑的运算符,取决于它们参数的类型;
  • &&||被称为条件运算符。

详情请参见JLS § 15.22。位运算符和逻辑运算符

对于XOR,没有直接等价的 &&|| 运算符。之所以&&||作为独立的运算符与&|不同是因为它们有短路行为(这就是它们被称为“条件”的原因),而XOR无法进行短路操作。


有趣。在《Java™教程》的运算符一章中,表格将“逻辑运算符”与“位运算符”区分开来,然而在相等、关系和条件运算符一章中,却称之为“条件运算符”,正如你所说的那样。 - Garret Wilson
啊,我想我明白了这个冲突。实际上,我认为“逻辑运算符”意味着比较布尔值。因此,条件运算符是逻辑运算符,位运算符也可以用作逻辑运算符。这就是为什么JLS在引用&|^时说“位运算符和逻辑运算符”。因此,我认为将&&||(条件运算符)称为逻辑运算符也不会有错。 - Garret Wilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接