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.
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.