Подтвердить что ты не робот

Логический оператор ИЛИ против побитового оператора ИЛИ

кто-нибудь знает, почему:

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"

4b9b3361

Ответ 1

В первом случае && имеет более высокий приоритет, чем || так что выражение оценивается как if ( (false && true) || true ), и вы получаете True.

Во втором случае побитовый оператор OR имеет более высокий приоритет, чем && поэтому выражение оценивается как if ( false && ( true | true ) ), и вы получаете False.

Ответ 2

Из-за приоритет оператора. В первом примере сначала выполняется &&, а затем ||. Но побитовое ИЛИ имеет более высокий приоритет, поэтому в вашем втором примере сначала выполняется |, затем &&.