Java XOR运算符问题

Java XOR运算符问题,java,bit-manipulation,xor,Java,Bit Manipulation,Xor,我对Java中的XOR运算符^有一些问题 我一直认为Java没有逻辑异或运算符,因为有人告诉我,^是按位的。 今天我发现一些(未经证实的)帖子(没有来源)说,^在Java中重载,用作布尔值的逻辑异或和整数的位异或 哪种说法是正确的?谁能提供一些可靠的消息来源 如果^重载,它接受哪些类型?定义 当运算符&、^或|的两个操作数的类型为 可转换(§5.1.8)为原始整数类型,二进制数字 提升首先在操作数上执行(§5.6.2) 按位运算符表达式的类型是 操作数 对于^,结果值是操作数值的按位异或 及

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

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

哪种说法是正确的?谁能提供一些可靠的消息来源

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

定义

当运算符
&
^
|
的两个操作数的类型为 可转换(§5.1.8)为原始整数类型,二进制数字 提升首先在操作数上执行(§5.6.2)

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

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

&
^
|
运算符的两个操作数均为
布尔型
Boolean
,则按位运算符表达式的类型为
Boolean
。 在所有情况下,操作数都要进行拆箱转换(§5.1.8) 必要时

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

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

您应该将^视为按位异或

您应该将布尔值视为false=0和true=1的单个位


第二句话和你的问题有很大关系,就像它和程序员一样思考一样

我认为将操作符称为“重载”是可以的,这只是一个一般概念。但是当然,你不能以C++或其他语言的方式来超载操作员。如果不是语言术语,那么AJB-IMO。在谈论这种语言时,我会避免使用它。Java中有两个
^
运算符,一个按位运算符,一个逻辑运算符。