Ich denke, meine Antwort kann verständlicher sein:
Es gibt zwei Unterschiede zwischen &
und&&
.
Wenn sie als logisches UND verwenden
&
und &&
kann logisch sein AND
, wenn das &
oder&&
links und rechts Ausdruck zur Folge hat alles wahr ist, die ganze Operation Ergebnis kann wahr sein.
wann &
und &&
wie logischAND
gibt es einen Unterschied:
bei Verwendung &&
als logischAND
wird der rechte Ausdruck nicht ausgeführt, wenn das Ergebnis des linken Ausdrucks falsch ist.
Nehmen Sie das Beispiel:
String str = null;
if(str!=null && !str.equals("")){ // the right expression will not execute
}
Bei Verwendung von &
:
String str = null;
if(str!=null & !str.equals("")){ // the right expression will execute, and throw the NullPointerException
}
Ein weiteres Beispiel:
int x = 0;
int y = 2;
if(x==0 & ++y>2){
System.out.print(“y=”+y); // print is: y=3
}
int x = 0;
int y = 2;
if(x==0 && ++y>2){
System.out.print(“y=”+y); // print is: y=2
}
& kann als Bitoperator verwendet werden
&
kann als bitweiser AND
Operator verwendet werden, &&
kann nicht.
Der bitweise UND-Operator "&" erzeugt genau dann 1, wenn beide Bits in seinen Operanden 1 sind. Wenn jedoch beide Bits 0 sind oder beide Bits unterschiedlich sind, erzeugt dieser Operator 0. Genauer gesagt, bitweise Der AND-Operator "&" gibt 1 zurück, wenn eines der beiden Bits 1 ist, und 0, wenn eines der Bits 0 ist.
Von der Wiki-Seite:
http://www.roseindia.net/java/master-java/java-bitwise-and.shtml