В 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); // Вывод