Ответ 1
&
побитовое.
&&
является логическим.
&
оценивает обе стороны операции. &&
оценивает левую часть операции, если она true
, она продолжает и оценивает правую сторону.
Возможные дубликаты:
В чем разница между | и || в Java?
Разница в и &&
Мне просто интересно, какая разница между & и &&?
Через несколько дней я написал условие для оператора if
, выглядевшего примерно так:
if(x < 50 && x > 0)
Однако я изменил && на & и не обнаружил ошибок. Какая разница?
Пример: я скомпилировал эту простую программу:
package anddifferences;
public class Main {
public static void main(String[] args) {
int x = 25;
if(x < 50 && x > 0) {
System.out.println("OK");
}
if(x < 50 & x > 0) {
System.out.println("Yup");
}
}
}
Он напечатал "OK" и "Yup". Так ли имеет значение, какой из них я использую, если они оба работают?
&
побитовое.
&&
является логическим.
&
оценивает обе стороны операции. &&
оценивает левую часть операции, если она true
, она продолжает и оценивает правую сторону.
& побитовый оператор И, сравнивающий бит каждого операнда.
Например,
int a = 4;
int b = 7;
System.out.println(a & b); // prints 4
//meaning in an 32 bit system
// 00000000 00000000 00000000 00000100
// 00000000 00000000 00000000 00000111
// ===================================
// 00000000 00000000 00000000 00000100
&& является логическим оператором AND, сравнивающим только логические значения только операндов. Он принимает два операнда, указывающих логическое значение, и делает для них ленивую оценку.
& & == logical AND
& = побитовое И
'&' выполняет оба теста, а '& &' выполняет только 2-й тест, если первое верно. Это называется shortcircuiting и может считаться оптимизацией. Это особенно полезно для защиты от nullness.
if( x != null && x.equals("*BINGO*") {
then do something with x...
}
& & является логическим оператором
& является оператором бит
По-видимому, если вы немного сравниваете true с true, ответ верен, и если вы выполняете немного сравнения true и false, ответ будет ложным!