小编典典

Java中的&和&&有什么区别?

all

我一直认为&&Java 中的 operator 是用来验证它的 boolean 操作数是否都是true,而&operator
是用来对两个整数类型进行 Bit-wise 操作的。

最近我知道&operator 也可以用来验证它的两个布尔操作数是否都是true,唯一的区别是即使 LHS 操作数为假,它也会检查 RHS 操作数。

&Java中的运算符是否在内部重载?或者这背后是否有其他概念?


阅读 89

收藏
2022-06-27

共1个答案

小编典典

& <-- 验证两个操作数
&& <-- 如果第一个操作数的计算结果为假,则停止计算,因为结果将为假

(x != 0) & (1/x > 1)<-- 这意味着先评估(x != 0)然后评估(1/x > 1)然后执行 &。问题是对于 x=0
这将引发异常。

(x != 0) && (1/x > 1)<-- 这意味着评估(x != 0)并且只有当这是真的然后评估(1/x > 1)所以如果你有 x=0
那么这是完全安全的并且如果 (x != 0) 评估为 false 则不会抛出任何异常整个事情直接评估为 false不评估(1/x > 1).

编辑:

exprA | exprB<-- 这意味着先评估exprA然后评估exprB然后执行|.

exprA || exprB<-- 这意味着评估exprA,并且仅当这是false评估exprB并执行||.

2022-06-27