如何评估这个表达式?

How would this expression be evaluated?

考虑以下表达式:

!true || false && true || false

计算结果为 false,但我想知道 java 如何完成这些操作。我知道 order in terms of precedence,其中 ! (not) 具有最高优先级,其次是 && (and),然后是 || (or)

我可以通过几种方式查看它的评估情况:

您正确地指出了运算符优先级文档,并且它源自相同的文档,即第二个和第三个选项都不正确。二破双双!和 && 优先规则,第三个打破了!优先规则。

第一个选项最接近Java的方式,但是Java也会短路&&和||运算符(仅评估到可以给出明确答案的程度 - 即第一个 true 代表 || 和第一个 false 代表 &&)。所以在 false && true 中它只会评估第一个条件 (false) 并跳过其余的。