1. Structure de la Stringclasse

Aujourd'hui, nous allons parler de la Stringclasse. Après ints, la classe String est la classe la plus populaire en Java. Il est utilisé absolument partout. Il a un tas de méthodes utiles que vous feriez mieux de 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 ; Stringles objets sont stockés dans la mémoire d'une manière particulière. Fondamentalement, la Stringclasse est une classe très 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 apprendrez tout cela, beaucoup de choses deviendront vraiment beaucoup plus faciles à faire pour vous. Eh bien, nous allons commencer par le cœur même de cet écosystème - l'organisation de la Stringclasse.

Tableau de caractères

La structure de la Stringclasse est en fait très simple : à l'intérieur se trouve un tableau de caractères (char array) qui stocke tous les caractères de la chaîne. Par exemple, voici comment le mot "Bonjour" est stocké :

Structure de la classe String
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.


2. Méthodes de la Stringclasse

La Stringclasse a beaucoup de méthodes : elle a 18 constructeurs à elle seule ! Donc ci-dessous, nous ne mentionnons que les plus basiques d'entre eux :

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()
Met une chaîne dans le string pool.

Vous pouvez en savoir plus sur les constructeurs dans l'article Constructeurs Java .

É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 tableau char

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()etjoin()

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.