我知道 &&
和 ||
的规则,但是 &
和 |
是什么意思?请用示例解释一下。
我知道 &&
和 ||
的规则,但是 &
和 |
是什么意思?请用示例解释一下。
虽然基本差别在于&
主要用于位操作,通常在long
、int
或byte
上使用,它可以用作一种掩码,但即使您使用它代替逻辑&&
,结果可能也会有所不同。
在某些情况下,差异更为明显:
第一个观点非常直接,不会引起错误,但需要更多时间。如果在一个条件语句中有几个不同的检查,请将那些更便宜或更有可能失败的检查放在左边。
对于第二个观点,看看这个例子:
if ((a != null) & (a.isEmpty()))
这对于null
失败,因为评估第二个表达式会产生NullPointerException
。逻辑运算符&&
是懒惰的,如果左操作数为false,则结果无论右操作数如何都为false。
第三点的示例--假设我们有一个使用DB而没有任何触发器或级联的应用程序。在删除Building对象之前,我们必须将Department对象的building更改为另一个对象。让我们还假设操作状态作为布尔值返回(true = success)。那么:
if (departmentDao.update(department, newBuilding) & buildingDao.remove(building))
这将评估两个表达式,因此即使由于某些原因部门更新失败,也会执行建筑物删除。使用 &&
,它按预期工作,并在第一次失败后停止。
至于 a || b
,它等同于 !(!a && !b)
,如果 a
为真,则停止,不需要更多解释。