Имеет ли смысл использование скобок при использовании && или ||?
Один предпочтительнее другого? Если так, то почему?
int value1 = 1;
int value2 = 2;
if (value1 == 1 && value2 == 2) {
System.out.println("works");
}
if ((value1 == 1) && (value2 == 2)) {
System.out.println("works");
}
Ожидаемые совпадения с реальными результатами. Оба печатают строку "работает"
2 ответа
Решение
Скобки полезны для группировки ваших логических выражений так же, как в математических выражениях.
Это делает порядок приоритета более понятным.
В этом случае они не нужны, так как вы работаете только с 2 выражениями.
Но что происходит в аналогичном случае, используя оба OR
а также AND
?
Это может привести к неоднозначному случаю:
if (a && b || c)
Будет интерпретироваться как:
if ((a && b) || c)
Когда вы хотели, чтобы выражение было обработано как:
if (a && (b || c))
Нет, это абсолютно то же самое. Потому что 1 && ... не является допустимым выражением, и поэтому оно будет читаться так, как вы установили скобки.