Comme son nom l’indique, String Pool in java est un pool de chaînes stocké dans Java Heap Memory. Nous savons que String est une classe spéciale en java et que nous pouvons créer des objets String à l’aide d’un nouvel opérateur ainsi qu’en fournissant des valeurs entre guillemets doubles.
String Pool in Java
Voici un diagramme qui explique clairement comment la String Pool est maintenue dans l’espace de la pile Java et ce qui se passe lorsque nous utilisons différentes méthodes pour créer des chaînes. La String Pool est possible uniquement parce que String est immuable en Java et implémente le concept de String interning. La String Pool est également un exemple du modèle de conception Flyweight. La String Pool contribue à économiser beaucoup d’espace pour l’exécution Java, bien qu’elle prenne plus de temps pour créer la chaîne. Lorsque nous utilisons des guillemets doubles pour créer une chaîne, cela recherche d’abord une chaîne de même valeur dans la String Pool. Si elle est trouvée, elle renvoie simplement la référence, sinon elle crée une nouvelle chaîne dans la pool, puis renvoie la référence. Cependant, en utilisant l’opérateur new, nous forçons la classe String à créer un nouvel objet String dans l’espace de la pile. Nous pouvons utiliser la méthode
intern()
pour la placer dans la pool ou faire référence à une autre chaîne de la pool ayant la même valeur. Voici le programme Java pour l’image de la String Pool:
package com.journaldev.util;
public class StringPool {
/**
* Java String Pool example
* @param args
*/
public static void main(String[] args) {
String s1 = "Cat";
String s2 = "Cat";
String s3 = new String("Cat");
System.out.println("s1 == s2 :"+(s1==s2));
System.out.println("s1 == s3 :"+(s1==s3));
}
}
La sortie du programme ci-dessus est:
s1 == s2 :true
s1 == s3 :false
Lecture recommandée: Classe Java String
Combien de chaînes sont créées dans le pool de chaînes?
Parfois lors d’un entretien Java, on vous posera une question sur le pool de chaînes. Par exemple, combien de chaînes sont créées dans l’instruction suivante;
String str = new String("Cat");
Dans l’instruction ci-dessus, soit 1, soit 2 chaînes seront créées. S’il existe déjà une chaîne littérale « Cat » dans le pool, alors une seule chaîne « str » sera créée dans le pool. S’il n’y a pas de chaîne littérale « Cat » dans le pool, elle sera d’abord créée dans le pool, puis dans l’espace de la heap, donc un total de 2 objets chaînes seront créés. Lire: Questions d’entretien sur les chaînes Java
Source:
https://www.digitalocean.com/community/tutorials/what-is-java-string-pool