Java XOR运算符问题

时间:2014-11-18 20:07:42

标签: java bit-manipulation xor

我对Java中的XOR运算符 ^ 有一些疑问。

我一直认为Java没有逻辑XOR运算符,因为有几个人告诉我 ^ 是按位的。 今天我发现了一些(未经证实的)帖子(没有来源)说 ^ 在Java中过载,作为布尔值的逻辑XOR和作为按位XOR的例子。对于整数。

哪种说法属实?任何人都可以提供一些可靠的来源吗?

如果 ^ 超载,它会接受哪些类型?

2 个答案:

答案 0 :(得分:7)

Java Language Specification定义

  

当运算符&^|的两个操作数都属于   convertible(§5.1.8)到基本整数类型,二进制数字   促销首先在操作数上进行(§5.6.2)。

     

按位运算符表达式的类型是提升类型   操作数。

     
      
  • 对于^,结果值是操作数值的按位异或。
  •   

  

&^|运算符的两个操作数都属于boolean类型或   Boolean,然后按位运算符表达式的类型为boolean。   在所有情况下,操作数都要进行拆箱转换(第5.1.8节)   必要时。

     
      
  • 对于^,如果操作数值不同,则结果值为true;   否则,结果为false
  •   

Java中没有重载运算符的概念。

答案 1 :(得分:0)

您应该将^视为按位异或。

您应该将布尔值视为单个位,其中false = 0且true = 1。

第二句与你的问题有很大关系,因为它与像程序员一样思考!