if(foo || bar) {
}
当foo为真时,它甚至会进入bar吗?
||
并且&&
都是短路逻辑运算符。
当两个表达式用 OR ( ||
) 连接时,如果第一个为真,则答案始终为真。
|| true false
true true true
false true false
&&
并||
在知道结果后立即停止评估。例如:
if (a == null || a.get() == null)
效果很好,因为如果 a 为 null,则不会评估第二部分,并且您不会冒 NullPointerException 的风险。
如果您希望两个表达式都被评估,您可以使用无条件的&
or |
:
if (a == null | a.get() == null)
将评估两个条件,无论第一个条件是否为真。
该线程提供了您可能希望发生这种情况的示例。