Читал книгу философия ява. дошёл к пункту: какя разница между одинарним и двойним использованием сивволов
boolean i,a;
if(a||i){}
if(a|i){}
if(a&&i){}
if(a&i){}
Кроме того что & это должно бить двое true,
а с | нужно только одно true.
Вообще, & и | - побитовые операторы, а && и || - логические.
В случае с boolean типами в вашем примере нет разницы принципиальной. В общем случае при использовании & или | на boolean правая часть выражения будет вычисляться независимо от того, какое значение у левой части выражения.
К примеру, если бы там были не просто переменные, а метод, скажем:
private boolean additionalCheck() {
// делаем что-то
// к примеру, меняем глобальное состояние
return true;
}
То между if(a||additionalCheck()){} и if(a|additionalCheck()){} будет разница, если a равно true.
В первом случае additionalCheck() вообще не вызовется, т.к. a уже true и нет смысла проверять другие условия. А вот втором случае additionalCheck() вызовется независимо от значения a.
Если у вас в additionalCheck() специфичная логика, к примеру, меняющая глобальное состояние, то нужно с умом выбирать, что использовать - |/& или ||/&&.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости