Логическое ИЛИ ||
имеет более низкий приоритет, чем логическое И &&
. Итак:
A && B || C && D
эквивалентно:
(A && B) || (C && D)
, тогда как то, что в скобках, оценивается первым.
Подробнее об операторах в Java :
РЕДАКТИРОВАТЬ:
В первом примере:
A && B && (C && D) || (E && F)
это оценивается следующим образом:
= A && B && (C && D) || (E && F)
= R1 && (C && D) || (E && F)
= R1 && R2 || (E && F)
= R1 && R2 || R3
= R4 || R3
= R5
Во втором примере:
A && B && ((C && D) || (E && F))
это оценивается следующим образом:
= A && B && ((C && D) || (E && F))
= R1 && ((C && D) || (E && F))
= R1 && ( R2 || (E && F))
= R1 && ( R2 || R3 )
= R1 && R4
= R5
Обратите внимание, что &&
и ||
являются операторами короткого замыкания, что означает, что правый операнд не будет оцениваться, если результат будет получен из вычисления левого операнда.