Les chaines en Java - API String
String est probablement la classe la plus utilisée dans la bibliothèque de classes Java. La raison évidente en est que les chaînes sont une partie très importante de la programmation.
La première chose à comprendre à propos de string est que chaque string que vous créez est en fait un objet de type String. Même les constantes de chaîne sont en fait des objets de chaîne. Par exemple :
System.out.println("Hello, world");
la chaîne “Hello, world " est un objet String.
La deuxième chose à comprendre à propos de string est que les objets de type String sont immuables; une fois qu'un objet String est créé, son contenu ne peut pas être modifié. Bien que cela puisse sembler être une restriction sérieuse, ce n'est pas le cas, pour deux raisons:
- Si vous devez modifier une chaîne, vous pouvez toujours en créer une nouvelle contenant les modifications.
- Java définit les classes homologues de String, appelées StringBuffer et StringBuilder, qui permettent la modification de chaînes, de sorte que toutes les manipulations de chaîne normales sont toujours disponibles en Java.
Les chaînes peuvent être construites de différentes manières. Le plus simple est d'utiliser une déclaration comme celle-ci
String welcome="Hello, world";
Une fois que vous avez créé un objet String, vous pouvez l’utiliser partout où une chaîne est autorisée. Par exemple, cette déclaration affiche welcome;
System.out.println(welcome);
Longueur de chaine
Les méthodes utilisées pour obtenir des informations sur un objet sont appelées méthodes d'accès. Une méthode d'accès que vous pouvez utiliser avec des chaînes est la méthode length(), qui renvoie le nombre de caractères contenus dans l'objet chaîne.
String welcome = "Hello"; System.out.println("Taille : " + welcome.length()); // Taille : 5
Sous-chaînes
Vous pouvez extraire une sous-chaîne d'une chaîne plus grande avec la méthode de substring() de la classe String. Par exemple
String welcome = "Hello"; String s = greeting.substring(0, 3);
crée une chaîne composée des caractères "Hel".
Le deuxième paramètre de substring() est la première position que vous ne voulez pas copier. Dans notre cas, nous voulons copier les positions 0, 1 et 2 (de la position 0 à la position 2 incluse)
Concaténation
Java définit un opérateur pour les objets String: “+”. Il est utilisé pour concaténer deux chaînes. Par exemple :
String welcome= "H" + "ello" + ", " + "world";
Résultats dans welcome contenant "Hello, world"
Lorsque vous concaténez une chaîne avec une valeur qui n'est pas une chaîne, cette dernière est convertie en chaîne.
int annee=2019 String debut= annee + " is the new year";
définit debut sur la chaîne "2019 is the new year"
Si vous devez assembler plusieurs chaînes, séparées par un délimiteur, utilisez la méthode statique "join":
String all = String.join(" / ", "S", "M", "L", "XL"); // "all" est la chaîne "S / M / L / XL "
A partir de Java 11, il existe une méthode "repeat"
String repeated = "Java".repeat(3); // repeated est "JavaJavaJava"
Egalité
Pour vérifier si deux chaînes sont égales, utilisez la méthode equals.
s.equals(t)
Renvoie vrai si les chaînes s et t sont égales, faux sinon. Notez que s et t peuvent être des variables de chaîne ou des littéraux de chaîne. Par exemple
"Hello".equals(t) // ou "Hello".equals("Hello")
N'utilisez pas l'opérateur == pour vérifier si deux chaînes sont égales! Il détermine uniquement si les chaînes sont stockées au même endroit. Bien sûr, si les chaînes sont au même endroit, elles doivent être égales. Mais il est tout à fait possible de stocker plusieurs copies de chaînes identiques à des endroits différents.
Chaînes vides et nulles
La chaîne vide" "est une chaîne de longueur 0. Vous pouvez vérifier si une chaîne est vide en appelant
if (str.length() == 0) // ou if(str.equals(""))
Une chaîne vide est un objet Java qui contient la longueur de la chaîne (à savoir 0) et un contenu vide. Cependant, une variable de chaîne peut également contenir une valeur spéciale, appelée null, qui indique qu'aucun objet n'est actuellement associé à la variable.
Pour vérifier si une chaîne est nulle, utilisez
if (str == null)
Parfois, vous devez vérifier qu'une chaîne n'est ni nulle ni vide. Alors utilisez
if (str != null && str.length() != 0)
Formatage de la sortie
Vous pouvez afficher un nombre x sur la console avec l’instruction System.out.print(x). Cette commande affichera x avec le nombre maximal de chiffres non nuls pour ce type. Par exemple
double x = 10000.0 / 3.0; System.out.print(x); // affiche 3333.3333333333335
Dans les premières versions de Java, le formatage des nombres était un peu fastidieux. Heureusement, Java 5 a ramené la vénérable méthode printf de la bibliothèque C. Par exemple, l'appel
System.out.printf("%8.2f", x);
affiche x avec une largeur de champ de 8 caractères et une précision de 2 caractères. En d’autres termes, l'affichage contient un espace et les sept caractères
Vous pouvez fournir plusieurs paramètres à printf. Par exemple:
System.out.printf("Hello, %s. Next year, you'll be %d", name, age);
Chacun des spécificateurs de format qui commencent par un caractère % est remplacé par l'argument correspondant. Le caractère de conversion qui termine un spécificateur de format indique le type de la valeur à formater: f est un nombre à virgule flottante, s une chaîne et d un entier décimal.
Type de données | Spécificateur de Format |
---|---|
int | %d |
char | %c |
float | %f |
chaine | %s |
boolean | %b |
Vous pouvez utiliser la méthode statique String.format pour créer une chaîne mise en forme sans l'afficher:
String message = String.format("Hello, %s. Next year, you'll be %d", name, age)
L'API String
La classe String en Java contient plus de 50 méthodes. Un nombre étonnamment grand d'entre eux sont suffisamment utiles pour qu'on puisse les utiliser fréquemment. Le tableau suivant résume ceux que nous avons trouvés les plus utiles.
Méthode | Description | Version Java |
---|---|---|
char charAt(int index) | Retourne le caractère à l'index spécifié. | |
int compareTo(String obj) | Renvoie une valeur négative si la chaîne vient avant obj dans l'ordre du dictionnaire, une valeur positive si la chaîne vient après obj dans l'ordre du dictionnaire ou 0 si les chaînes sont égales. | |
boolean empty() | Renvoie vrai si la chaîne est vide ou est constituée d'espaces. | |
boolean blank() | Renvoie vrai si la chaîne est vide ou est constituée d'espaces. | 11 |
boolean startsWith(String prefix) boolean endsWith(String suffix) | Renvoie vrai si la chaîne commence ou se termine par un suffix. | |
int indexOf(String str) int indexOf(String str, int fromIndex) int indexOf(int cp) int indexOf(int cp, int fromIndex) | Renvoie le début de la première sous-chaîne égale à la chaîne str ou au point de code cp, commençant à l'indice 0 ou à fromIndex, ou -1 si str ne se produite pas dans cette chaîne. | |
int lastIndexOf(String str) int lastIndexOf(String str, int fromIndex) int lastindexOf(int cp) int lastindexOf(int cp, int fromIndex) | Retourne le début de la dernière sous-chaîne égale à la chaîne str ou au point de code cp, en commençant à la fin de la chaîne ou à fromIndex. | |
String replace(CharSequence oldString, CharSequence newString) | Renvoie une nouvelle chaîne obtenue en remplaçant toutes les chaînes correspondant à oldString dans la chaîne par la chaîne newString. Vous pouvez fournir des objets String ou StringBuilder pour les paramètres CharSequence. | |
String toLowerCase() String toUpperCase() | Renvoie une nouvelle chaîne contenant tous les caractères de la chaîne d'origine, avec les caractères majuscules convertis en minuscules ou minuscules convertis en majuscules. | |
String trim() | Renvoie une nouvelle chaîne en éliminant tous les caractères de début et de fin ≤ U + 0020 (trim) ou d'espacement (strip) dans la chaîne d'origine. | |
String strip() | 11 |