Junior
Qu'est-ce qu'un pool de chaînes en Java?
sobes.tech IA
Réponse de l'IA
Le String Pool (piscine de chaînes) est une zone dans le heap (tas) de la JVM où sont stockés les littéraux de chaînes. Lorsqu'une JVM rencontre un littéral de chaîne, elle vérifie d'abord cette piscine. Si la chaîne existe déjà, une référence à l'objet existant est renvoyée. Sinon, un nouvel objet chaîne est créé dans la piscine et une référence à celui-ci est renvoyée.
Avantages:
- Économie de mémoire: Plusieurs références peuvent pointer vers le même objet chaîne dans la piscine.
- Performance: La comparaison de références (==) pour les chaînes dans la piscine est plus rapide que la comparaison du contenu des chaînes (equals()).
Exemple:
// Crée une chaîne dans la piscine (si elle n'existe pas encore)
String s1 = "hello";
// Renvoie une référence au même objet "hello" dans la piscine
String s2 = "hello";
// s1 et s2 pointent vers le même objet
System.out.println(s1 == s2); // Affichera true
// Crée un nouvel objet chaîne "hello" dans le heap, pas dans la piscine
String s3 = new String("hello");
// s1 et s3 pointent vers des objets différents
System.out.println(s1 == s3); // Affichera false
// Le contenu des chaînes est identique
System.out.println(s1.equals(s3)); // Affichera true
La méthode intern() peut être utilisée pour ajouter explicitement une chaîne créée avec new String() à la piscine ou pour obtenir une référence à une chaîne existante dans la piscine avec le même contenu.
// Crée un nouvel objet chaîne "world" dans le heap
String s4 = new String("world");
// Ajoute "world" à la piscine (si elle n'y est pas déjà) et renvoie la référence
String s5 = s4.intern();
// Crée une chaîne dans la piscine (référence au même objet vers lequel s5 pointe maintenant)
String s6 = "world";
// s5 et s6 pointent vers le même objet dans la piscine
System.out.println(s5 == s6); // Affichera true