Приоритет логических операций

Приоритет логических операций

Приоритет операции означает не то, какая операция первой выполнится, а то, кто первый захватит себе данные.


int a = 10;
int b = 20;
int c = 30;

System.out.println(++a > 99 && ++b < 23 || ++c == 31);
/* false && true || true */
Кто возьмёт себе первый true?
Если так: (false && true) || true, результат будет true, т.е. выражение ++b не вычислится, а ++c вычислится.
Если так: false && (true || true), результат будет false, т.е. ни ++b, ни ++c не вычислится.
Поскольку приоритет && выше чем у ||, ++b захватит себе &&. Ответ будет true.


System.out.println("a= "+a+" b= "+b+" c= "+c);  // a= 11, b= 20, c= 31
Методы и Инкапсуляция