可以说我有这个:
if(bool1 && bool2 && bool3) {
...
}
现在。如果 bool1 被评估为 false,Java 是否足够聪明以跳过检查 bool2 和 bool3? java甚至从左到右检查它们吗?我问这个是因为我正在按执行它们所需的时间对 if 语句中的条件进行“排序”(从左边最便宜的条件开始)。现在我不确定这是否会给我任何性能优势,因为我不知道 Java 如何处理这个问题。
原文由 Paul 发布,翻译遵循 CC BY-SA 4.0 许可协议
是的,Java(类似于其他主流语言)使用_惰性求值_短路,这意味着它求值尽可能少。
这意味着以下代码是完全安全的:
此外,
a || b
从不评估b
如果a
评估为true