Java中的条件评估过程

可以说我有以下条件:

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

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

如果第一个通过,那么其他人会被忽略?

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

JLS 15.24 :

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

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

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

来自JLS

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

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

是的,评估是从左到右!

如果第一个条件为真,则不评估下一个条件。 这个概念称为短路评估。 你可以在这里阅读更多内容。 之前发布的类似SO问题是Java逻辑运算符短路

1)从左到右

2)在这种情况下,如果一个条件为真,则不评估其余条件。 所以如果myList为null,它将不会抛出一个NullPointerException评估myList.isEmpty() (因为它不会对它进行求值)

每个运营商都有自己的优先级和关联性 。

这些链接足以回答您的问题。

|| 是短路OR运算符,这意味着从左到右严格评估条件,并且该检查过程在第一个真实结果上停止。