HOWTO · Java
Utiliser les opérateurs AND et OR en Java
Utilisez `&&` et `||` pour combiner des conditions booléennes, comprendre le court-circuit et ne pas les confondre avec `&` et `|`.
Sur cette page
Utilisez && lorsque toutes les conditions doivent être vraies et || lorsqu’une seule suffit. Ces deux opérateurs font une évaluation en court-circuit : Java n’évalue la partie droite que si elle peut encore modifier le résultat. Ainsi, text != null && !text.isEmpty() n’appelle pas isEmpty() lorsque text vaut null.
! inverse une condition booléenne. Java attend boolean ou Boolean; une chaîne ou un nombre n’est pas converti implicitement. La spécification Java définit ces règles.
Choisir &&, || et !
&& est vrai seulement si les deux opérandes le sont ; || est vrai si l’un des deux l’est. Ce programme a été compilé et exécuté dans Polyglot avec OpenJDK 11.0.32.
public class LogicalOperators {
public static void main(String[] args) {
boolean hasTicket = true;
boolean isMember = false;
System.out.println("ticket && member: " + (hasTicket && isMember));
System.out.println("ticket || member: " + (hasTicket || isMember));
System.out.println("!member: " + !isMember);
int age = 20;
boolean canEnter = age >= 18 && age <= 65;
System.out.println("can enter: " + canEnter);
}
}
ticket && member: false
ticket || member: true
!member: true
can enter: true
Vérifier null en premier
public class ShortCircuitBoundary {
public static void main(String[] args) {
String text = null;
boolean safe = text != null && !text.isEmpty();
System.out.println("&& with null: " + safe);
try {
boolean unsafe = text != null & !text.isEmpty();
System.out.println("& with null: " + unsafe);
} catch (NullPointerException exception) {
System.out.println("& with null: NullPointerException");
}
}
}
&& with null: false
& with null: NullPointerException
Avec &&, la condition fausse de gauche évite le déréférencement. Avec &, les deux côtés sont évalués et l’exception affichée est levée. Scanner.nextLine() ne renvoie pas null; ce garde sert aux résultats, champs ou configurations susceptibles d’être nuls.
Ce que le court-circuit ne protège pas
Il saute seulement la partie droite lorsque la gauche décide déjà le résultat. Un Boolean enabled = null doit être contrôlé avec enabled != null && enabled; enabled && otherCondition peut lever NullPointerException pendant le déballage. Ne placez pas une opération obligatoire dans une partie qui peut être sautée.
Ne pas remplacer && par &
& et | acceptent les booléens mais évaluent toujours les deux côtés ; ils sont aussi des opérateurs binaires pour les entiers. Employez && et || pour les gardes ordinaires. Évitez des effets de bord comme index++ dans une condition : le court-circuit peut les ignorer.