我对Java中的XOR运算符 ^ 有一些疑问。
我一直认为Java没有逻辑XOR运算符,因为有几个人告诉我 ^ 是按位的。 今天我发现了一些(未经证实的)帖子(没有来源)说 ^ 在Java中过载,作为布尔值的逻辑XOR和作为按位XOR的例子。对于整数。
哪种说法属实?任何人都可以提供一些可靠的来源吗?
如果 ^ 超载,它会接受哪些类型?
答案 0 :(得分:7)
当运算符
&
,^
或|
的两个操作数都属于 convertible(§5.1.8)到基本整数类型,二进制数字 促销首先在操作数上进行(§5.6.2)。按位运算符表达式的类型是提升类型 操作数。
- 对于
^
,结果值是操作数值的按位异或。
和
当
&
,^
或|
运算符的两个操作数都属于boolean
类型或Boolean
,然后按位运算符表达式的类型为boolean
。 在所有情况下,操作数都要进行拆箱转换(第5.1.8节) 必要时。
- 对于^,如果操作数值不同,则结果值为
true
; 否则,结果为false
。
Java中没有重载运算符的概念。
答案 1 :(得分:0)
您应该将^视为按位异或。
您应该将布尔值视为单个位,其中false = 0且true = 1。
第二句与你的问题有很大关系,因为它与像程序员一样思考!