Java 中的条件评估过程

假设我有以下条件:

if ( myList == null || myList.isEmpty() || xomeX == someY )

这些条件的评估顺序是什么?向左还是向右,从右到左还是每次都是随机的

如果第一个通过,那么其他的就被忽略了吗?


答案 1

它应该始终从左到右,但赋值运算符除外。您正在使用短路运算符 ,因此如果第一个条件是 ,则不会评估其余条件。=ORtrue

JLS 15.24

条件或运算符在语法上是左结合的(它从左到右分组)。

在运行时,首先计算左侧操作数表达式;如果结果的类型为布尔值,则进行拆箱转换 (§5.1.8)。

如果结果值为 true,则条件或表达式的值为 true,并且不计算右侧操作数表达式。


答案 2

来自 JLS

在运行时,首先计算左侧操作数表达式 [...]如果结果值为 true,则条件或表达式的值为 true,并且不计算右侧操作数表达式。


推荐