Concaténer des chaînes de caractères

En Java, les instances de la classe String sont immuables (ne peuvent être modifiées). Ainsi, dans les trois lignes de codes suivantes, cinq objets seront créés :

// exemple de concaténation de chaînes avec l'opérateur "+"

String str = "Allo"; // création d'une variable contenant "Allo"
str = str + " toi";  // création d'une variable contenant " toi"
                     // et d'une autre contenant "Allo toi" (str)
str = str + "!";     // création d'une variable contenant "!"
                     // et d'une autre contenant "Allo toi!" (str)

On voit bien à quel point il peut être coûteux d'utiliser l'opérateur + si on veut concaténer un grand nombre de chaînes.

La classe StringBuffer

En utilisant une instance de StringBuffer, on évite la création massive d'objets. Pour ajouter une chaîne au contenu courant du tampon, il n'y a qu'à appeler la méthode "append". Pour extraire la chaîne résultante, on appelle finalement la méthode "toString".

Exemple :

// exemple de concaténation de chaînes avec un StringBuffer

StringBuffer buff = new StringBuffer("Allo");
buff.append(" toi");
buff.append("!");
// ...
String chaineFinale = buff.toString();

La classe StringBuffer possède plusieurs méthodes intéressantes comme "insert" pour insérer un ou plusieurs caractères à une position donnée et "reverse" pour inverser l'ordre des caractères contenus dans la chaîne.

Voir aussi la classe StringBuilder.