Je pense que ma réponse peut être plus compréhensible:
Il existe deux différences entre &
et &&
.
S'ils utilisent comme ET logique
&
et &&
peut être logique AND
, lorsque le résultat de l'expression &
ou de &&
gauche et de droite tout est vrai, l'ensemble du résultat de l'opération peut être vrai.
quand &
et &&
comme logique AND
, il y a une différence:
lors de l'utilisation &&
comme logique AND
, si le résultat de l'expression de gauche est faux, l'expression de droite ne s'exécutera pas.
Prenons l'exemple:
String str = null;
if(str!=null && !str.equals("")){ // the right expression will not execute
}
Si vous utilisez &
:
String str = null;
if(str!=null & !str.equals("")){ // the right expression will execute, and throw the NullPointerException
}
Un autre exemple supplémentaire:
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
}
& peut être utilisé comme opérateur de bits
&
peut être utilisé comme AND
opérateur Bitwise , &&
ne peut pas.
L'opérateur binaire AND "&" produit 1 si et seulement si les deux bits de ses opérandes sont 1. Cependant, si les deux bits sont 0 ou si les deux bits sont différents, cet opérateur produit 0. Pour être plus précis au niveau du bit L'opérateur AND "&" renvoie 1 si l'un des deux bits est égal à 1 et il renvoie 0 si l'un des bits est égal à 0.
Depuis la page wiki:
http://www.roseindia.net/java/master-java/java-bitwise-and.shtml