« Qu'en penses-tu, Amigo ? Quelle est la classe Java la plus populaire après int ? »

"Tu m'as déjà donné un spoiler dans le titre de la leçon, Ellie. C'est String!"

"En effet, c'est un spoiler. Stringest utilisé absolument partout. Il a un tas de méthodes utiles qu'il vaut mieux connaître.

"La Stringclasse est la seule classe autre que les types primitifs dont les littéraux peuvent être utilisés dans une switchinstruction ; le compilateur gère l'ajout de chaînes et les objets String d'une manière spéciale ; les objets sont stockés en mémoire d'une manière spéciale String. Stringclasse spéciale.

"De plus, la Stringclasse a un tas de classes d'assistance dont le but est de simplifier davantage le travail avec les chaînes en Java. Lorsque vous apprenez tout cela, beaucoup de choses deviendront vraiment beaucoup plus faciles à faire pour vous."

"Je ne peux pas attendre."

"Eh bien, nous allons commencer par le cœur même de cet écosystème - l'organisation de la Stringclasse. La structure de la Stringclasse est en fait très simple : à l'intérieur se trouve un tableau de caractères ( chartableau) qui stocke tous les caractères de la chaîne. Pour exemple, voici comment le mot 'Hello' est stocké :

Structure de la classe String

C'est important.

En fait, ce n'est pas tout à fait exact. Étant donné que la Stringclasse est très importante, elle utilise de nombreuses optimisations et les données sont stockées en interne non pas sous la forme d'un tableau de caractères, mais simplement sous la forme d'un tableau d'octets.

Méthodes de la classe String

La Stringclasse a beaucoup de méthodes : elle a 18 constructeurs à elle seule ! Donc, ci-dessous, je ne listerai que les plus fréquemment utilisés :

Méthodes Description
int length()
Renvoie le nombre de caractères dans la chaîne
boolean isEmpty()
Vérifie si la chaîne est une chaîne vide
boolean isBlank()
Vérifie que la chaîne ne contient que des caractères blancs : espace, tabulation, nouvelle ligne, etc.
char charAt(int index)
Renvoie le caractère à la position d'index dans la chaîne.
char[] toCharArray()
Renvoie un tableau des caractères (une copie) qui composent la chaîne
byte[] getBytes()
Convertit une chaîne en un ensemble d'octets et renvoie le tableau d'octets.
String[] split(String regex)
Divise une chaîne en plusieurs sous-chaînes.
String join(CharSequence delimiter, elements)
Joint plusieurs sous-chaînes ensemble
String intern()
Place une chaîne dans le pool de chaînes.

"Ça a l'air très bien !"

"Écrivons un programme qui convertit un chemin de fichier du style Unix au style Windows. Unix utilise le /caractère pour séparer les dossiers, tandis que Windows utilise le \caractère.

Solution 1. Utiliser un chartableau

Code Remarques
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
Créer un objet Scanner
Lire une ligne depuis la console

Convertir une chaîne en un tableau de caractères
Boucler sur les caractères
Si le caractère est /,
remplacez-le par \. N'oubliez pas de vous évader.

Créez une nouvelle chaîne basée sur le tableau de caractères.
Affichez la chaîne.

Solution 2. En utilisant les méthodes split()et join():

Code Remarques
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String array[] = path.split("\\/");


String result = String.join("\\", array);


System.out.println(result);
Créer un objet Scanner
Lire une ligne depuis la console

Convertir une chaîne en un tableau de chaînes . Le /caractère est utilisé comme séparateur (les deux barres obliques supplémentaires sont le résultat d'un double échappement).
Concatène toutes les chaînes du tableau de chaînes . Le \est utilisé comme séparateur (on le voit échappé).

Affichez la chaîne.

Solution 3. En utilisant la replace(char oldChar, char newChar)méthode :

Code Remarques
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
Créer un objet Scanner
Lire une ligne depuis la console

Remplacer simplement un caractère par un autre
(le second est échappé)
Afficher la chaîne.

"J'ai le plus aimé la troisième solution. Mais je vais pratiquer les trois."

"Bien joué, Amigo. Je vois que tu es déjà impatient de mettre tes nouvelles connaissances en pratique. La leçon est terminée."