В Java есть два способа записи логических операторов: краткая форма (&& и ||) и полная форма (& и |).
Краткая форма используется для выполнения логических операций над булевыми операндами и имеет более высокий приоритет. Кроме того, в краткой форме операнды вычисляются лениво, то есть второй операнд не вычисляется, если первый операнд уже дает конечный результат.
Полная форма используется для выполнения логических операций над целочисленными значениями и не ленивая. Оба операнда всегда вычисляются.
Вот пример кода, который иллюстрирует разницу между этими двумя формами записи:
boolean a = true;
boolean b = false;
boolean c = true;
boolean d = false;
boolean result;
// Краткая форма, дает true, так как a и b оба являются false; операнда b не вычисляется, т.к. первый операнд уже даёт конечный результат
result = a && b;
System.out.println(result); // Вывод: false
// Полная форма, результат такой же, но оба операнда вычисляются result = a & b;
System.out.println(result); // Вывод: false
// Краткая форма, дает true, так как хотя бы один из операндов (c) является true; операция вычисляется лениво result = c || d;
System.out.println(result); // Вывод: true
// Полная форма, результат такой же, но оба операнда вычисляются result = c | d;
System.out.println(result); // Вывод: true
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov