Junior
À quoi sert le String Pool en Java?
sobes.tech IA
Réponse de l'IA
Le String Pool en Java est nécessaire pour :
- Économiser de la mémoire : Empêche la création de doublons de littéraux de chaînes. Si une chaîne avec la même valeur existe déjà dans le pool, une référence à celle-ci est utilisée.
- Optimiser les performances : La comparaison de littéraux de chaînes (
==) devient rapide, car elle compare les références, pas le contenu des chaînes.
Lors de la création de littéraux de chaînes (String s = "hello";), la JVM vérifie d'abord le String Pool. Si "hello" existe déjà, s fait référence à l'objet existant. Sinon, un nouvel objet "hello" est créé dans le pool, et s y fait référence.
L'utilisation du constructeur new String("hello") crée toujours un nouvel objet String dans le heap, indépendamment du String Pool. Pour l'ajouter au pool, il faut appeler la méthode intern().
// Exemple de fonctionnement du String Pool
String s1 = "hello"; // Vérifie le String Pool, crée si nécessaire, référence au pool
String s2 = "hello"; // Vérifie le String Pool, trouve l'existant, référence au pool
System.out.println(s1 == s2); // true - références identiques
String s3 = new String("hello"); // Crée un nouvel objet dans le heap
System.out.println(s1 == s3); // false - références différentes
String s4 = s3.intern(); // Vérifie le String Pool pour le contenu de s3.
// Étant donné que "hello" est déjà dans le pool (de s1/s2),
// s4 référence à l'objet dans le pool.
System.out.println(s1 == s4); // true - s1 et s4 référencent le même objet dans le pool