logical_expression

logical_expression 
      ::= 
      ( "!" expression ) 
      | ( expression 
      ( "ampersand" 
      | "ampersand=" 
      | "|" 
      | "|=" 
      | "^" 
      | "^=" 
      | ( "ampersand" "ampersand" ) 
      | "||=" 
      | "%" 
      | "%=" ) 
      expression ) 
      | ( expression "?" expression ":" expression ) 
      | "true" 
      | "false" 

[rule list]
This rule is called by

-> expression

Explications

Afin d'évaluer des expressions complexes, on peut avoir recours aux opérateurs logiques contenus dans le tableau ci-dessous.

Opérateurs logiques

OpérationSignification
!a NON a
a & ba ET b
a && ba ET b (voir ci-dessous)
a &= béquivalent à a = a & b
a | ba OU b
a || ba OU b
a |= béquivalent à a = a | b
a ^ ba OU-exclusif b (xor)
a ^= béquivalent à a = a ^ b
truevrai
falsefaux

Les opérateurs doubles, comme || et && donnent le même résultat que les opérateurs | et &, sauf qu'ils arrêtent d'évaluer l'expression à partir du moment ou le résultat final est connu. Par exemple, lorsque l'on évalue true || meth(), aucun appel à méthode ne sera effectué, car de toute façon, quelqu'en soit le résultat, l'expression sera vraie. De même si l'on évalue false && meth(), car l'expression sera fausse. Naturellement, l'évaluation se fait de gauche à droite.

Il existe également un opérateur spécial, qui permet de faire des tests sans l'aide de l'instruction if. Il s'agit de l'opérateur "ternaire" (il travaille avec trois opérande) :

cond ? v() : f()
Le résultat de cette opération dépend de l'expression booléenne cond. Si cond est vrai, alors le résultat de cette expression sera v(), sinon, ce sera f().

Cette dernière opération est très pratique lorsque l'on veut attribuer des valeurs par défaut à des variables, comme ci-dessous :

Exemples

nom = saisieNom();
nom = (nom == null) ? "inconnu" : nom;

/** retourne le plus petit entier de a et b */
public int min(int a,int b) {
    return (a < b) ? a : b;
}

Index général - Index concepts - Règles BNF
© 1996, DIP Genève, Alexandre Maret & Jacques Guyot
page générée Fri Jun 21 15:41:02 MET DST 1996