mot-clé switch en Java
Le mot-clé switch
en Java est utilisé pour exécuter un bloc de code parmi plusieurs possibilités. Il s'agit d'une instruction de contrôle qui permet de tester l'égalité de la variable par rapport à une liste de valeurs, chacune ayant son propre bloc de code.
Utilisation
L'instruction switch
constitue un moyen plus propre et plus lisible de gérer plusieurs branchements conditionnels que l'utilisation de plusieurs instructions if-else
.
Syntax
switch (expression) {
case value1:
// code block
break;
case value2:
// code block
break;
// more cases...
default:
// default code block
}
expression
: La variable ou l'expression dont la valeur est comparée aux valeurs des cas.case value
: Valeur constante à laquelle l'expression est comparée. S'ils correspondent, le bloc de code correspondant est exécuté.break
: Termine la déclarationswitch
, évitant ainsi les retombées.default
: S'exécute si aucune valeur de cas ne correspond à l'expression.
Exemples
Exemple 1 : Utilisation de base
public class SwitchExample {
public static void main(String[] args) {
int day = 3;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
default:
System.out.println("Invalid day");
}
}
}
Dans cet exemple, la variable day
est comparée aux valeurs du cas. Puisque day
est 3, la sortie sera "Wednesday".
Exemple 2 : Utilisation de chaînes de caractères
public class SwitchStringExample {
public static void main(String[] args) {
String fruit = "Apple";
switch (fruit) {
case "Apple":
System.out.println("Fruit is Apple");
break;
case "Banana":
System.out.println("Fruit is Banana");
break;
case "Cherry":
System.out.println("Fruit is Cherry");
break;
default:
System.out.println("Unknown fruit");
}
}
}
Cet exemple montre comment utiliser une déclaration switch
avec des valeurs String
. Puisque fruit
est "Apple", le résultat sera "Fruit is Apple".
Exemple 3 : Comportement de repli (Fall-Through)
public class SwitchFallThroughExample {
public static void main(String[] args) {
int num = 2;
switch (num) {
case 1:
System.out.println("One");
case 2:
System.out.println("Two");
case 3:
System.out.println("Three");
break;
default:
System.out.println("Default case");
}
}
}
Dans cet exemple, l'absence de déclarations sur break
entraîne un comportement de repli. Puisque num
est 2, la sortie sera :
Two
Three
Default case
Conseils et bonnes pratiques
- Utilisez les déclarations
break
: Utilisez toujours les déclarationsbreak
pour éviter les retombées, sauf si vous le souhaitez explicitement. - Cas par défaut: Incluez un cas
default
pour gérer les valeurs inattendues. - Valeurs constantes: Assurez-vous que les valeurs de casse sont des constantes ou des littéraux.
- Type Compatibilité: L'expression
switch
peut être de typebyte
,short
,char
,int
,String
, ou de type enum. Assurez-vous que les valeurs des cas sont compatibles avec le type de l'expression. - Code lisible: Utilisez les instructions
switch
pour rendre votre code plus lisible et plus facile à maintenir que de multiples instructionsif-else
. - Améliorations de Java 12: Depuis Java 12, vous pouvez utiliser des expressions de commutation pour renvoyer des valeurs directement à partir de cas, ce qui simplifie la syntaxe et améliore la lisibilité du code.
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class SwitchEnumExample {
public static void main(String[] args) {
Day day = Day.WEDNESDAY;
switch (day) {
case MONDAY:
System.out.println("Monday");
break;
case TUESDAY:
System.out.println("Tuesday");
break;
case WEDNESDAY:
System.out.println("Wednesday");
break;
case THURSDAY:
System.out.println("Thursday");
break;
case FRIDAY:
System.out.println("Friday");
break;
case SATURDAY:
System.out.println("Saturday");
break;
case SUNDAY:
System.out.println("Sunday");
break;
}
}
}
L'utilisation des enums dans les déclarations switch
peut améliorer la lisibilité du code et la sécurité des types.