Java - Expressions Switch

Bonjour à tous, futurs programmeurs Java !aujourd'hui, nous allons plonger dans l'une des fonctionnalités les plus excitantes introduite en Java 12 et améliorée en Java 14 : les expressions switch. En tant que professeur de sciences informatiques de votre quartier, je suis là pour vous guider à travers ce voyage, même si vous n'avez jamais écrit une seule ligne de code auparavant. Alors, bouclez vos ceintures et c'est parti !

Java - Switch Expressions

Qu'est-ce qu'une Expression Switch ?

Avant de nous plonger dans les expressions switch, prenons un détour rapide pour comprendre ce qu'est une instruction switch. Imaginez-vous qu'à la crème glacée, selon votre choix de goût, vous obtenez une differente topping. C'est essentiellement ce qu'une instruction switch fait en programmation – elle vous permet d'exécuter un code différent en fonction de conditions différentes.

Maintenant, les expressions switch prennent ce concept et le rendent encore plus puissant et concis. Elles nous permettent de traiter l'ensemble du bloc switch comme une expression qui peut renvoyer une valeur. C'est comme passer d'un cornet de crème glacée ordinaire à un sundae délice !

La vieille manière : Instructions Switch Traditionnelles

Commençons par une instruction switch traditionnelle pour voir comment nous le faisions avant :

String jour = "LUNDI";
String typeDeJour;

switch (jour) {
case "LUNDI":
case "MARDI":
case "MERCREDI":
case "JEUDI":
case "VENDREDI":
typeDeJour = "Journée de la semaine";
break;
case "SAMEDI":
case "DIMANCHE":
typeDeJour = "Week-end";
break;
default:
typeDeJour = "Jour invalide";
}

System.out.println(typeDeJour);

Dans cet exemple, nous déterminons si un jour est un jour de la semaine ou un week-end. Notez comment nous devons utiliser les instructions break pour empêcher le passage en revue, et nous devons déclarer typeDeJour en dehors du bloc switch.

La nouvelle manière : Expressions Switch

Maintenant, voyons comment nous pouvons obtenir le même résultat en utilisant des expressions switch :

String jour = "LUNDI";
String typeDeJour = switch (jour) {
case "LUNDI", "MARDI", "MERCREDI", "JEUDI", "VENDREDI" -> "Journée de la semaine";
case "SAMEDI", "DIMANCHE" -> "Week-end";
default -> "Jour invalide";
};

System.out.println(typeDeJour);

Wow ! Regardez combien c'est plus propre et plus concis. Nous avons combiné plusieurs cas, supprimé les instructions break, et assigné le résultat directement à typeDeJour. C'est comme nettoyer votre chambre – soudain, tout est propre et ordonné !

Utilisation des expressions switch avec des étiquettes "case L ->"

La syntaxe fléchée (->) est une fonctionnalité clé des expressions switch. Elle nous permet de fournir de manière concise la manière de spécifier à la fois l'étiquette du cas et l'action associée. Regardons un autre exemple :

int numeroDeJour = 3;
String nomDuJour = switch (numeroDeJour) {
case 1 -> "Lundi";
case 2 -> "Mardi";
case 3 -> "Mercredi";
case 4 -> "Jeudi";
case 5 -> "Vendredi";
case 6 -> "Samedi";
case 7 -> "Dimanche";
default -> "Numéro de jour invalide";
};

System.out.println("Jour " + numeroDeJour + " est " + nomDuJour);

Dans cet exemple, nous convertissons un numéro de jour en son nom correspondant. La syntaxe fléchée rend chaque cas une seule ligne facile à lire. C'est comme un panneau indicateur pointant directement vers la bonne réponse !

Utilisation des expressions switch avec des instructions "case L:" et l'instruction yield

Parfois, vous pouvez avoir besoin de faire plus que de simplement renvoyer une valeur simple dans votre expression switch. C'est là que l'instruction yield est pratique. C'est comme dire, "J'ai terminé mes calculs, voici la réponse finale !"

Regardons un exemple :

int mois = 8;
String saison = switch (mois) {
case 12, 1, 2:
yield "Hiver";
case 3, 4, 5:
yield "Printemps";
case 6, 7, 8:
yield "Été";
case 9, 10, 11:
yield "Automne";
default: {
String message = "Mois invalide : " + mois;
System.out.println(message);
yield "Inconnu";
}
};

System.out.println("La saison pour le mois " + mois + " est " + saison);

Dans cet exemple, nous déterminons la saison en fonction du mois. Notez comment nous utilisons yield pour renvoyer des valeurs, surtout dans le cas default où nous faisons un peu plus de traitement.

Utilisation avancée : Expressions dans les étiquettes de cas

L'une des fonctionnalités les plus cool des expressions switch est que vous pouvez utiliser des expressions dans les étiquettes de cas. C'est comme donner à votre instruction switch un superpouvoir ! Voici un exemple :

record Personne(String nom, int age) {}

Personne personne = new Personne("Alice", 25);

String stadeDeVie = switch (personne) {
case Personne p when p.age() < 13 -> "Enfant";
case Personne p when p.age() >= 13 && p.age() < 20 -> "Adolescent";
case Personne p when p.age() >= 20 && p.age() < 60 -> "Adulte";
case Personne p when p.age() >= 60 -> "Sénior";
default -> "Inconnu";
};

System.out.println(personne.nom() + " est un " + stadeDeVie);

Dans cet exemple, nous utilisons un record (une autre fonctionnalité cool de Java) pour représenter une personne, puis des expressions switch avec des conditions complexes pour déterminer leur stade de vie. C'est comme avoir un coach de vie personnel dans votre code !

Conclusion

Les expressions switch sont un outil puissant en Java qui peuvent rendre votre code plus lisible, plus concis et moins sujet aux erreurs. C'est comme passer d'un téléphone à lames à un smartphone – soudain, vous pouvez faire tellement plus avec moins d'effort !

N'oubliez pas, la programmation est tout une question de pratique. Alors, n'ayez pas peur d'expérimenter avec ces concepts. Essayez de créer vos propres expressions switch, jouez avec différents scénarios, et surtout, amusez-vous bien avec !

À mesure que nous terminons, voici un tableau résumant les méthodes clés que nous avons discutées :

Méthode Description
-> Syntaxe fléchée pour des étiquettes de cas et des actions concises
yield Instruction pour renvoyer une valeur d'une expression switch
case L when condition Correspondance de motifs dans les étiquettes de cas

Bon codage, et que vos switch expriment toujours clairement !

Credits: Image by storyset