Проверьте следующую таблицу Приоритет операторов .
|
(поразрядное ИЛИ) имеет более высокий приоритет, чем &&
(логическое И), поэтому false | true
оценивается первым.
Тем не менее, порядок оценки не имеет значения в вашем примере.И (true && false) | true
, и true && (false | true)
возвращают true
.В первом случае это false | true)
, то есть true
.Во втором случае это true && true
, что также true
.
Теперь, вот пример, где приоритет оператора имеет значение:
System.out.println (false && true | true);
System.out.println (false && true || true);
|
имеет более высокийприоритет чем &&
, но &&
имеет более высокий приоритет, чем ||
.
Поэтому эти выражения оцениваются как:
System.out.println (false && (true | true));
System.out.println ((false && true) || true);
В результате первое возвращает false
а второй возвращает true
.