1. java-hell.de
  2. Thèmes
  3. Chaînes et switch
Thème 7 sur 11

Apprendre les chaînes et switch en Java

Pourquoi == sur des chaînes finira par te mordre et pas equals() : ici, tu apprends à manipuler du texte et à remplacer de longues suites de if-else par un switch.

Les exercices

Ce que tu vas apprendre dans ce thème

  1. Longueur d'une chaîne
  2. Comparer des chaînes
  3. Switch
Exercice 1 sur 3

Longueur d'une chaîne

Les chaînes de caractères ont plein de méthodes pratiques. La plus simple : .length()

String texte = "Bonjour";
IO.println(texte.length()); // 7

Attention : pour les String, c'est .length() avec parenthèses — pour les tableaux, c'est .length sans !

Remplace ??? pour afficher la longueur du mot.

Code de départ
void main() {
    String mot = "Programmation";
    IO.println(???);
}
Contexte
Méthodes utiles des String

Les String ont plein de méthodes intégrées : .toUpperCase(), .toLowerCase(), .substring(debut, fin), .indexOf("texte"), .replace("ancien", "nouveau"), .trim() (supprime les espaces au début et à la fin), .contains("texte"), .startsWith("prefixe").

Comme les String sont immuables, toutes ces méthodes renvoient une nouvelle chaîne — la chaîne d'origine ne change pas.

Exercice 2 sur 3

Comparer des chaînes

Piège classique en Java : on ne compare pas des String avec ==, on utilise .equals() :

if (nom.equals("Anna")) {
    // ...
}

Remplace ??? par la bonne comparaison.

Code de départ
void main() {
    String reponse = "oui";

    if (???) {
        IO.println("C'est parti !");
    } else {
        IO.println("Annulé");
    }
}
Contexte
Le String Pool

Java a un String Pool — un cache pour les littéraux de chaîne. Si tu écris "salut" deux fois dans ton code, les deux pointent vers le même objet dans le pool. C'est pour ça que == marche par hasard quand tu compares deux littéraux — mais c'est de la chance, pas une règle sur laquelle compter !

Les String créées à l'exécution (par exemple avec new String("salut"), par concaténation ou à partir d'une saisie utilisateur) ne finissent pas dans le pool. Donc : utilise toujours .equals().

Exercice 3 sur 3

Switch

Quand tu as une longue chaîne de if-else if, un switch est plus lisible :

switch (valeur) {
    case 1: ...; break;
    case 2: ...; break;
    default: ...;
}

Important : n'oublie pas le break; — sinon Java continue tout droit dans le case suivant !

Ajoute le case manquant pour mercredi.

Code de départ
void main() {
    int jour = 3;

    switch (jour) {
        case 1: IO.println("Lundi"); break;
        case 2: IO.println("Mardi"); break;
        // Ajoute le case 3 pour "Mercredi"
        default: IO.println("Autre jour");
    }
}
Contexte
Expressions switch (depuis Java 14)

Le Java moderne a une variante de switch plus élégante avec -> :

String jour = switch (nr) { case 1 -> "Lundi"; case 2 -> "Mardi"; default -> "Autre"; };

Avantages : pas besoin de break, elle peut renvoyer directement une valeur, et le compilateur refuse de compiler si un cas n'est pas couvert (une expression switch doit être exhaustive). Le switch classique existe toujours, cela dit.

Assez lu. À toi de jouer.

Dans le tutoriel, tu écris le code toi-même, tu cliques sur Exécuter et tu vois tout de suite si ton programme marche. Sans JDK, sans IDE, sans prise de tête.

S'entraîner sur Chaînes et switch dans le navigateur