En Java, comme dans la plupart des langages de programmation, les chaînes de caractères (String) sont immuables, une fois qu’une chaîne de caractères est initialisée avec une valeur, elle ne peut plus être modifiée.

StringBuilder
Qu’est-ce que c’est et comment l’utiliser ?
Exemple en code :
public class TestStringBuilder {
public static void main(String[] args) {
String longString = "";
for (int i = 0; i < 100; i++) {
longString += "Mangez 5 fruits et légumes par jours";
longString += "Mangez 5 fruits et légumes par jours et boire de l'eau";
longString += "Mangez 50 fruits et 50 légumes par jours pour rester en bonne santé et jeune";
}
}
}
À première vue, il semble que nous ne faisons qu’étendre notre chaîne de caractères avec trois concaténations à chaque itération de notre boucle. Cependant, ce n’est pas le cas.
Les chaînes de caractères étant immuables, chaque fois que nous ajoutons un élément à longString
, nous allouons de la mémoire pour un nouvel objet String.
Cela occupe donc beaucoup de mémoire inutile et le processus d’allocation de mémoire à chaque itération de la boucle ralentit le programme. Donc, mauvaise pratique.
Une approche plus efficace consiste à utiliser l’objet StringBuilder :
public class TestStringBuilder {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < 100; i++) {
stringBuilder.append("C'est déjà mieux !")
.append("Et comme vous le voyez, vous pouvez enchaîner les méthodes avec StringBuilder et append")
.append("Utiliser StringBuilder est plus efficace que la concaténation simple");
}
}
}
En interne, l’objet StringBuilder est traité comme un tableau de longueur variable qui contient une séquence de caractères. Le plus grand avantage est que la longueur et le contenu de l’objet StringBuilder peuvent être modifiés à tout moment du programme sans allouer de mémoire inutile.
Oracle dispose d’une documentation sur toutes les méthodes intégrées que la classe StringBuilder possède.
L’un des avantages de la classe StringBuilder est que les méthodes “append” et “insert” sont surchargées, elles acceptent tout type de données dans l’argument et convertissent ce type de données en String et ajoutent/insèrent les caractères de cet objet String dans le StringBuilder.
Quelques types de données qu’un objet StringBuilder peut accepter :
public class TestStringBuilder {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("Bonjour, moi c'est Nicolas et j'ai mangé ")
.append(2)
.append(" salades à midi et c'est ")
.append(true);
System.out.println(stringBuilder);
}
}
Sortie :
Bonjour, moi c'est Nicolas et j'ai mangé 2 salades à midi et c'est true
Process finished with exit code 0