Java如何在单个IF语句中处理多个条件


问题内容

可以说我有这个:

if(bool1 && bool2 && bool3) {
...
}

现在。如果bool1被评估为false,那么Java是否足够聪明来跳过检查bool2和bool2?Java甚至从左到右检查它们吗?我之所以这样问,是因为我在整理条件时将其内部条件“分类”(从左侧最便宜的条件开始)。现在我不确定这是否会给我带来任何性能上的好处,因为我不知道Java如何处理这个问题。


问题答案:

是的,Java(类似于其他主流语言)使用 惰性评估 短路,这意味着它的评估尽可能少。

这意味着以下代码是完全安全的:

if(p != null && p.getAge() > 10)

另外,a || b从不评估b是否atrue