[英]Java XOR Operator questions
我对Java中的XOR运算符^一些问题。
我一直认为Java没有逻辑XOR运算符,因为有几个人告诉我^是按位的。 今天我发现了一些(未经证实的)帖子(没有来源)说^在Java中过载,作为布尔值的逻辑异或作为整数的按位异或。
哪个论述是对的? 有人能提供一些可靠的来源吗?
如果^重载,它接受哪些类型?
Java语言规范定义
当运算符
&
,^
或|
两个操作数时 是一种可转换(第5.1.8节)到基本整数类型的类型,首先对操作数执行二进制数字提升(第5.6.2节)。按位运算符表达式的类型是操作数的提升类型。
- 对于
^
,结果值是操作数值的按位异或。
和
当两个操作数都是
&
,^
或|
operator的类型为boolean
或Boolean
,则按位运算符表达式的类型为boolean
。 在所有情况下,操作数都根据需要进行拆箱转换(第5.1.8节)。
- 对于^,如果操作数值不同,则结果值为
true
; 否则,结果是false
。
Java中没有重载运算符的概念。
您应该将^视为按位异或。
您应该将布尔值视为单个位,false = 0且true = 1。
第二句与你的问题有很大关系,因为它与像程序员一样思考!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.