【问题标题】: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中&运算符的两种不同使用方式是什么?

【问题讨论】:

    标签: java operators bitwise-operators


    【解决方案1】:

    & 可以作为二元 AND 运算符的非短路版本应用于两个 boolean 操作数(与短路 && 运算符不同)。

    | 可以作为二元 OR 运算符的非短路版本应用于两个 boolean 操作数(与短路 || 运算符不同)。

    ^ (XOR) 也可以应用于两个 boolean 操作数。

    总而言之,所有 3 个运算符都可以用作布尔运算符(当应用于 boolean 操作数时)或按位运算符(当应用于整数操作数时)。

    JLS 15.22.2.:

    中描述了这些运算符

    15.22.2.布尔逻辑运算符 &、^ 和 |

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

    • 对于&,如果两个操作数都为真,则结果值为真;否则结果为假。

    • 对于^,如果操作数的值不同,则结果值为真;否则结果为假。

    • 对于|,如果两个操作数的值都为假,则结果值为假;否则,结果为真。

    【讨论】:

    • 小技巧:a^ba!=b 相同,带有布尔值
    • @MarkJeronimus 是的,这是布尔 XOR 的行为。
    猜你喜欢
    • 1970-01-01
    • 2014-04-25
    • 2010-10-25
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 2023-02-09
    相关资源
    最近更新 更多