繁体   English   中英

Java XOR运算符问题

[英]Java XOR Operator questions

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

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

哪个论述是对的? 有人能提供一些可靠的来源吗?

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

Java语言规范定义

当运算符&^|两个操作数时 是一种可转换(第5.1.8节)到基本整数类型的类型,首先对操作数执行二进制数字提升(第5.6.2节)。

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

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

当两个操作数都是&^| operator的类型为booleanBoolean ,则按位运算符表达式的类型为boolean 在所有情况下,操作数都根据需要进行拆箱转换(第5.1.8节)。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM