除了按位与之外还有其他用途吗[重复]
Posted
技术标签:
【中文标题】除了按位与之外还有其他用途吗[重复]【英文标题】:is there any other use of & other than bitwise AND [duplicate] 【发布时间】:2019-10-14 17:41:38 【问题描述】:我正在阅读 Kathy 和 Bret 的 SCJP 6 书,并从这本书第 4 章(运算符)中看到了一些文字
+ 运算符可用于将两个数字基元相加,或 如果任一操作数是字符串,则执行连接操作。 &、| 和 ^ 运算符都可以以两种不同的方式使用,尽管如 在这个版本的考试中,他们的小游戏能力不会被测试。因为你知道 既然 Java 不是 C++,那么您不会对 Java 运算符通常不是这样感到惊讶 超载。但是,有一些例外的运算符会被重载:
我无法理解 &, | 的第二种用法和 ^ Java 中的运算符,分别是按位与、或和异或。 java中&运算符的两种不同使用方式是什么?
【问题讨论】:
【参考方案1】:&
可以作为二元 AND 运算符的非短路版本应用于两个 boolean
操作数(与短路 &&
运算符不同)。
|
可以作为二元 OR 运算符的非短路版本应用于两个 boolean
操作数(与短路 ||
运算符不同)。
^
(XOR) 也可以应用于两个 boolean
操作数。
总而言之,所有 3 个运算符都可以用作布尔运算符(当应用于 boolean
操作数时)或按位运算符(当应用于整数操作数时)。
JLS 15.22.2.:
中描述了这些运算符15.22.2.布尔逻辑运算符 &、^ 和 |
当 &、^ 或 | 的两个操作数运算符的类型为 boolean 或 Boolean,则按位运算符表达式的类型为 boolean。在所有情况下,操作数都会根据需要进行拆箱转换(第 5.1.8 节)。
对于&,如果两个操作数都为真,则结果值为真;否则结果为假。
对于^,如果操作数的值不同,则结果值为真;否则结果为假。
对于|,如果两个操作数的值都为假,则结果值为假;否则,结果为真。
【讨论】:
小技巧:a^b
与 a!=b
相同,带有布尔值
@MarkJeronimus 是的,这是布尔 XOR 的行为。以上是关于除了按位与之外还有其他用途吗[重复]的主要内容,如果未能解决你的问题,请参考以下文章