Je pense que ma réponse peut être plus compréhensible :
Il y a deux différences entre &
et &&
.
S'ils utilisent un ET logique
&
et &&
peut être logique AND
lorsque le &
o &&
le résultat de l'expression de gauche et de droite est vrai, le résultat de toute 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 sera pas exécutée.
Prenons l'exemple de :
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 encore :
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 bit
&
peut être utilisé comme Bitwise AND
opérateur, &&
ne peut pas.
L'opérateur ET " & " au sens du bit produit 1 si et seulement si les deux bits de son ses opérandes sont égaux à 1. Pour être plus précis, l'opérateur ET " & " au sens des bits renvoie 1 si l'un des deux bits est 1 et 0 si l'un des bits est 0.
De la page wiki :
http://www.roseindia.net/java/master-java/java-bitwise-and.shtml