Логический оператор ИЛИ против побитового оператора ИЛИ
кто-нибудь знает, почему:
if (false && true || true) {
System.out.println("True");
} else {
System.out.println("False");
}
Печать " True"
if (false && true | true) {
System.out.println("True");
} else {
System.out.println("False");
}
Печать " False"
Ответы
Ответ 1
В первом случае && имеет более высокий приоритет, чем || так что выражение оценивается как if ( (false && true) || true )
, и вы получаете True.
Во втором случае побитовый оператор OR имеет более высокий приоритет, чем && поэтому выражение оценивается как if ( false && ( true | true ) )
, и вы получаете False.
Ответ 2
Из-за приоритет оператора. В первом примере сначала выполняется &&
, а затем ||
. Но побитовое ИЛИ имеет более высокий приоритет, поэтому в вашем втором примере сначала выполняется |
, затем &&
.