为什么我可以在 Java 中组合按位运算符和数学运算符,例如 &+?

Why can I combine a bitwise operator with a math operator, like &+, in Java?

我今天早些时候在写一些代码,忘记我写的是 Java 而不是 Swift,不小心输入了 &+。令人惊讶的是,我没有收到任何错误,并且代码已编译且 运行 正常。

稍微玩了一下,发现&+&-|+|-^+^- 所有编译和 运行 没有错误。看起来它们在作用于数字时都像第一个按位运算符:

1 &+ 2 == 1 & 2
3 |+ 4 == 3 | 4
7 ^+ 9 == 7 ^ 9

另一方面,似乎按位运算符和数学运算符的任何其他组合,如 +&&/^*,都提供编译时间错误。

为什么&+&-|+|-^+^-编译和运行没有错误?它们是否有一些我没有看到的用途,或者只是一些编译异常?

+ 代表 Unary Plus Operator + 结果为正数。

-表示Unary Minus Operator -结果为负数。

  • 1 &+ 21 & +2
  • 3 |- 43 | -4
  • 7 ^+ 97 ^ +9

请注意,*/ 运算符不能以相同的方式使用 (1 &/ 2)。