Retour au cours

Manipulation de texte : La classe String vs StringBuilder/StringBuffer

Maîtrise de Java : De Zéro à Développeur Professionnel (Un parcours en 50 leçons)

Leçon 30 : Manipulation de texte : Classe String vs StringBuilder/StringBuffer

La gestion du texte est fondamentale en programmation, et Java fournit trois classes principales à cet effet.

1. La classe String (Immuable)

Les Strings en Java sont immuables, ce qui signifie qu'une fois qu'un objet String est créé, sa valeur ne peut plus être modifiée. Toute opération semblant modifier une chaîne (comme la concaténation) crée en réalité un tout nouvel objet string en mémoire.

java String s = "Java"; s = s + " Course"; // Un nouvel objet String est créé et 's' pointe vers lui.

// Méthodes courantes de String : String name = " Alice "; name = name.trim(); // "Alice" int index = name.indexOf('i'); // 2 boolean check = name.startsWith("Al"); // true

Quand utiliser String : Pour des données textuelles simples et constantes, ou lorsque les valeurs de chaîne ne changent pas fréquemment.

2. StringBuilder (Mutable et non synchronisé)

Les objets StringBuilder sont mutables, ce qui signifie qu'ils peuvent être modifiés sans créer un nouvel objet à chaque fois. Cela les rend très efficaces pour les opérations impliquant des modifications fréquentes (ajout, insertion, suppression).

java StringBuilder sb = new StringBuilder("Start"); sb.append("ing"); // sb pointe toujours vers le même objet en mémoire sb.insert(0, "Re");

System.out.println(sb.toString()); // Sortie : Restarting

Quand utiliser StringBuilder : Lors de manipulations intensives de chaînes de caractères au sein d'un seul thread (scénario le plus courant).

3. StringBuffer (Mutable et synchronisé)

StringBuffer est fonctionnellement identique à StringBuilder, mais ses méthodes sont synchronisées (thread-safe). La synchronisation ajoute une surcharge de performance.

Quand utiliser StringBuffer : Uniquement lors d'un travail dans un environnement multithread où plusieurs threads pourraient accéder et modifier la même séquence simultanément (moins courant pour les débutants).

CaractéristiqueStringStringBuilderStringBuffer
MutabilitéImmuableMutableMutable
PerformanceLente (lors de modification)RapidePlus lente (due à la synchronisation)
Thread SafeOui (Immuable par nature)NonOui