switch_statement ::= "switch" "(" expression ")" "{" { ( "case" expression ":" ) | ( "default" ":" ) | statement } "}"
This rule is called by-> statement
switch
, au lieu de if
imbriqués.
Lors de la comparaison, si aucune valeur énumérée ne correspond à la valeur
fournie, on exécute la branche default
. Celle-ci est toutefois
facultative.
switch (choix) {
case 'a' :
afficher();
break;
case 'i' :
somme = 0;
compteur = 0;
break;
case 'q' :
quitter();
break;
case '$' :
System.out.prinln("touche réservée");
default :
System.out.println("touche non valide !");
}
On remarquera l'utilisation de l'instruction break
. En effet,
si l'on n'inclut pas ce mot-clé, toutes les instructions se trouvant dans
la branche correspondante sont exécutée, ainsi que toutes les instructions
se trouvant dans les branches suivantes.
Dans l'exemple ci-dessus, on voit que si choix
vaut '$'
alors on affichera les deux messages ("touche réservée" et "touche non valide !").
switch
qu'avec des types primitifs d'une
taille maximum de 32 bits (byte, short, int, char
) et pas avec
des objets complexes, tels que des chaînes de caractères (String
)
ou des nombres à virgule flottante.