理解 & 运算符的双重性质
在 Java 中,& 运算符对整数执行按位 AND 运算。然而,它也可以用于逻辑 AND 运算,从而导致对其真实性质的混淆。
澄清一下,& 运算符在内部重载。对于布尔操作数,它执行逻辑 AND 运算。这意味着它会评估两个操作数,在返回结果之前确定它们是否都为 true。
另一方面,当 & 运算符与整数操作数一起使用时,它会执行按位 AND 运算。这涉及比较两个操作数的各个位并返回一个新整数,其中每个位都是对输入位进行相应按位 AND 运算的结果。
工作原理
要理解逻辑 AND 运算和按位 AND 运算之间的区别,请考虑以下表达式:
(x != 0) & (1/x > 1) (x != 0) && (1/x > 1)
使用逻辑 AND 运算符(&),无论第一个操作数的结果如何,都会计算两个操作数。这意味着如果 x = 0,表达式将抛出错误,因为它尝试除以零。
但是,使用按位 AND 运算符 (&),仅当第一个操作数为真的。这意味着如果 x = 0,则表达式将计算为 false,而不尝试除以零。
与逻辑 OR 的类似行为
相同的原则适用于逻辑或运算符 (|)。表达式 exprA | exprB 计算两个操作数,无论第一个操作数的结果如何,而 exprA || exprB 仅在第一个操作数为 false 时计算第二个操作数。
结论
虽然 & 运算符同时具有逻辑和按位功能,但这两个操作之间的区别是至关重要的。逻辑 AND 始终计算两个操作数,而按位 AND 则避免在第一个操作数为 false 时计算第二个操作数。类似地,逻辑或计算两个操作数,而按位或避免在第一个操作数为 true 时计算第二个操作数。
以上是Java 的 & 运算符:按位 AND 或逻辑 AND – 什么时候做什么?的详细内容。更多信息请关注PHP中文网其他相关文章!