Doublons possibles:
Quelle est la différence entre | et || en Java?
Différence dans & et &&
Je me demandais simplement quelle était la différence entre et et && ?
Il y a quelques jours, j'ai écrit une condition pour une déclaration if
qui ressemblait à quelque chose comme:
if(x < 50 && x > 0)
Cependant, j'ai changé le && en juste & et il n'y avait aucune erreur . Quelle est la différence?
Exemple: j'ai compilé ce programme simple:
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");
}
}
}
Il a imprimé "OK" et "Yup". Alors, est-ce important que j'utilise si les deux fonctionnent?
&
est au niveau du bit. &&
est logique.
&
évalue les deux côtés de l'opération.&&
évalue le côté gauche de l'opération. S'il s'agit de true
, il continue et évalue le côté droit.
& est au niveau du bit opérateur AND qui compare les bits de chaque opérande.
Par exemple,
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
&& est un opérateur logique AND comparant uniquement les valeurs booléennes d'opérandes. Il faut deux opérandes indiquant une valeur booléenne et les évaluer paresseux.
&& == ET logique
& = bitwise ET
'&' effectue les deux tests, tandis que '&&' n'effectue le second test que si le premier est également vrai. Ceci est connu sous le nom de court-circuit et peut être considéré comme une optimisation. Ceci est particulièrement utile pour se prémunir contre la nullité (NullPointerException).
if( x != null && x.equals("*BINGO*") {
then do something with x...
}