正确地说:什么时候使用单个&
或单个|
而不是短路的&&
和||
变体? / p>
我似乎找不到一个更好的方法来评估布尔表达式的两端。
答案 0 :(得分:0)
正如您所暗示的,您意识到短路操作符&&
和||
与非短路操作符&
和|
之间的区别。但是什么时候差异会变得明显呢?当第二个表达式有副作用或长时间运行会影响性能时。最简单的副作用示例是碰巧返回boolean
的方法调用,例如:
if (firstOperation() & secondOperation()) //...
当您需要确保发生副作用时,请不要短路。但是我在实践中并不经常看到它,因为先调用具有副作用的方法再评估条件是很清楚的,例如:
boolean first = firstOperation();
boolean second = secondOperation();
if (first && second) //...
通常,您会看到短路运算符,该运算符在不必要时避免评估第二个操作数。当第二个条件没有副作用时,这将很方便,如果第二个条件涉及高昂的间接费用,这将变得很重要。