1. Caractères spéciaux de base et échappement
En programmation, les chaînes ne se composent pas seulement de lettres, mais aussi de caractères spéciaux : guillemets, retours à la ligne, tabulations, et parfois même des marqueurs comme \n et \t. Mais si vous voulez écrire dans une chaîne Bonjour, "user"!, le compilateur va aussitôt se demander : « Et les guillemets à l’intérieur de la chaîne — est-ce une erreur ? ». C’est là qu’intervient le mécanisme d’échappement.
En Java, l’échappement est une manière « d’indiquer un traitement spécial » pour certains caractères à l’intérieur d’une chaîne. Pour cela, on utilise la barre oblique inversée \ (alias « backslash »).
Caractères d’échappement classiques :
| Séquence | Description | Démonstration |
|---|---|---|
|
Saut de ligne | Touche Entrée |
|
Tabulation | Tab |
|
Antislash littéral | |
|
Guillemet double dans la chaîne | |
|
Apostrophe (rarement nécessaire dans les chaînes) | |
|
Retour chariot (ancien style de fin de ligne, rarement utilisé) | |
|
Caractère nul | (Invisible) |
|
Retour arrière (efface le caractère précédent — ne fonctionne pas toujours dans la console) |
Comment cela fonctionne
Écrivons quelques chaînes avec des caractères échappés pour les voir en action.
System.out.println("Bonjour, \"Utilisateur\"!");
// Sortie: Bonjour, "Utilisateur"!
System.out.println("C:\\Program Files\\MyApp");
// Sortie: C:\Program Files\MyApp
System.out.println("Ligne 1\nLigne 2");
// Sortie:
// Ligne 1
// Ligne 2
System.out.println("J'aime\tla\ttabulation!");
// Sortie:
// J'aime la tabulation!
Ainsi, grâce à un simple petit trait (\), vous pouvez faire « entrer » presque n’importe quel caractère spécial dans une chaîne, sans affoler le compilateur ou vos collègues.
2. Chaînes multilignes et retours à la ligne
Il est très fréquent d’avoir besoin d’écrire un message multiligne ou un ASCII art. La manière la plus directe consiste à utiliser \n dans une chaîne ordinaire.
System.out.println("Première ligne\nDeuxième ligne\nTroisième ligne");
Cependant, ce n’est pas toujours pratique, c’est pourquoi Java a introduit les blocs de texte (Text Blocks). Ils commencent par des triples guillemets """ et permettent d’écrire du texte multiligne sans échappement, en conservant la mise en forme — idéal pour le JSON, le SQL et le HTML.
// Littéral multiligne (Text Block)
String json = """
{
"name": "Alice",
"age": 30,
"skills": ["Java", "SQL", "Cloud"]
}
""";
System.out.println(json);
"""
Avec les blocs de texte, vous pouvez également créer facilement un texte multiligne qui comprend des guillemets, sans les dupliquer.
3. Unicode — comment Java stocke tous les caractères du monde
Dans le monde moderne, nous travaillons non seulement avec l’alphabet latin, mais aussi avec le cyrillique, les sinogrammes, des symboles mathématiques et même des émojis. Tout cela est possible grâce au système de codage des caractères — Unicode.
Qu’est-ce que Unicode ?
Unicode est une norme internationale qui attribue un numéro unique (code point) à chaque caractère, indépendamment de la langue et de la plateforme. Grâce à cela, vous pouvez facilement utiliser en Java du texte cyrillique, de l’anglais, des sinogrammes chinois et même des caractères spéciaux rares simultanément.
Exemple de chaîne dans plusieurs langues :
System.out.println("Hello, monde! 你好! مرحبا!");
Caractères Unicode dans les chaînes
Vous pouvez écrire directement n’importe quels caractères pris en charge par votre encodage, ou utiliser des séquences d’échappement de la forme \uXXXX, où XXXX est le code hexadécimal sur 4 chiffres du caractère.
System.out.println("Symbole: \u263A"); // Affichera 😊
Pour les caractères dont le code est supérieur à 65535 (par exemple, de nombreux émojis), on utilise une paire de substituts (UTF-16) :
// Le caractère 😊 (code 1F60A) est représenté par deux char
System.out.println("Smiley: \uD83D\uDE0A"); // Affichera 😊
Qu’est-ce que cela vous apporte ?
- Vous pouvez stocker et traiter n’importe quel texte.
- N’ayez pas peur de mélanger les langues et d’utiliser des caractères inhabituels — Java prend en charge Unicode « out of the box ».
- Particulièrement important pour travailler avec des utilisateurs internationaux et des alphabets non standards.
4. Émojis et caractères spéciaux dans les chaînes
Les chaînes modernes ne sont pas faites que de lettres, mais aussi d’émojis ! Par exemple, vous voulez envoyer à l’utilisateur un message joyeux avec un « sourire ».
Comment ajouter un emoji dans une chaîne ?
Insérez l’emoji directement dans la chaîne :
System.out.println("Bonjour! 😊");
Utilisez les codes Unicode : pour la plupart des émojis, vous pouvez utiliser des paires de substituts.
System.out.println("Voici un chat: \uD83D\uDC31"); // 🐱
Les émojis peuvent occuper deux caractères dans la chaîne (à cause d’UTF-16). Par conséquent, lors de certaines opérations (par exemple, obtenir la longueur), il peut y avoir des surprises :
String s = "😊";
System.out.println(s.length()); // Affichera 2, et non 1!
Cela vient du fait qu’un point de code Unicode est encodé par deux char en Java. Pour manipuler correctement les caractères, utilisez les points de code et les méthodes correspondantes au lieu d’un simple length().
5. Pièges et erreurs fréquentes
Erreur n° 1 : utilisation incorrecte des guillemets à l’intérieur d’une chaîne. Si vous n’échappez pas les guillemets internes, le compilateur « pense » que la chaîne est terminée.
System.out.println("Il a dit: "Bonjour!""); // Erreur!
Correct :
System.out.println("Il a dit: \"Bonjour!\"");
Erreur n° 2 : antislash unique dans un chemin. En Java, \ est utilisé pour les caractères spéciaux (\n, \t, \f, etc.). Par conséquent, la chaîne "C:\Temp\file.txt" est interprétée de travers.
System.out.println("C:\Temp\file.txt"); // Erreur ou résultat inattendu
Correct :
System.out.println("C:\\Temp\\file.txt"); // Antislashs doublés
Erreur n° 3 : ignorer les blocs de texte. À partir de Java 15, utilisez les blocs de texte — cela simplifie la manipulation des chaînes multilignes.
String path = """
C:\Temp\file.txt
""";
System.out.println(path);
Règle principale : échappez toujours les caractères spéciaux et les guillemets. Cela vous évitera des bogues cachés et vous fera gagner des heures de débogage.
GO TO FULL VERSION