Приоритет оператора и логический оператор в Java - PullRequest
0 голосов
/ 23 марта 2019

Когда я выполняю приведенный ниже код, я получаю вывод, приведенный ниже.Но в соответствии с приоритетом оператора Java && имеет более высокий приоритет, чем ||поэтому сначала (boolb = true) && (boolc = true) следует оценить, но этого не происходит.Подскажите, пожалуйста, причину и то, что на самом деле происходит за кулисами.

static boolean boola, boolb, boolc;

public static void main(String[] args) {
    boolean bool = (boola = true) || (boolb = true) && (boolc = true);

    System.out.println("" + boola + boolb + boolc);
}

Ожидаемые результаты: truetruetrue

Фактический результат: truefalsefalse

1 Ответ

3 голосов
/ 23 марта 2019

|| - операция короткого замыкания.Если его первый операнд равен true, он даже не оценивает второй.

Значение (boola = true) равно true, и оценка на этом просто останавливается.Таким образом, другие логические значения сохраняют свое первоначальное значение: false.

...