Quel est le concept de String Pool en Java?

Le pool de chaînes en Java est un pool de chaînes stockées dans la mémoire Java Heap. Ce didacticiel vous aidera avec une approche détaillée de Java String Pool avec des exemples.

Avez-vous entendu parler du terme «Pool de chaînes en Java?» Eh bien, si non, vous avez atterri au bon endroit. Le pool de chaînes en Java est un pool de chaînes qui est stocké dans Mémoire de tas. Laissez-nous creuser un peu plus et comprendre ce concept de pool de chaînes Java en détail.



convertir la chaîne de date en date

Les pointeurs suivants seront abordés dans cet article:



Commençons!

Tout d'abord, comprenons comment exactement un objet string est créé!



Comment créer une chaîne?

Pour créer un objet String en Java, il existe deux manières:

  • Utilisation du nouvel opérateur. Par exemple,
Chaîne s1 = nouvelle chaîne ('Joey')
  • Utilisation d'une expression littérale ou constante de chaîne. Par exemple,
String s1 = 'Joey' (chaîne littérale) ou String s1 = 'Joe' + 'y' (expression constante de chaîne)

Maintenant, quel est ce pool de chaînes dont je parle et comment la création d'une chaîne en Java est-elle liée à cela. Laissez-moi réduire le désordre!

Qu'est-ce que String Pool en Java?

String Pool est une zone de stockage dans le tas Java.



Allocation de chaînes, comme tout allocation d'objets , se révèle être une affaire coûteuse à la fois dans le temps et dans la mémoire. La machine virtuelle Java effectue certaines étapes lors de l'initialisation des littéraux de chaîne pour augmenter les performances et réduire la charge mémoire. Pour réduire le nombre d'objets String créés dans la JVM, la classe String conserve un pool de chaînes.

Chaque fois qu'un littéral de chaîne est créé, le JVM vérifie d'abord le pool de littéraux de chaîne. Si la chaîne existe déjà dans le pool de chaînes, une référence à l'instance mise en pool est renvoyée. Si la chaîne n'existe pas dans le pool, un nouvel objet String s'initialise et est placé dans le pool.

Après avoir appris le concept théoriquement, laissez-moi vous dire comment fonctionne pas à pas un pool de chaînes en Java à l'aide d'instances simples!

Comment fonctionne le pool de chaînes en Java?

Lorsque vous créez une nouvelle chaîne comme celle-ci:

Chaîne s1 = 'Rachel'

JVM vérifie automatiquement si la même valeur existe dans le pool de constantes de chaîne ou non.

  • si oui, il occupe la valeur déjà existante.
  • Si non, il crée une nouvelle chaîne par lui-même et l'ajoute au pool de chaînes.

Si vous souhaitez arrêter ce comportement, créez une chaîne à l'aide de l'opérateur new:

Chaîne s1 = nouvelle chaîne («Rachel»)

Maintenant, si vous souhaitez ajouter cette chaîne au , Java vous fournit une méthode appelée, méthode intern () que vous pouvez appeler la méthode native intern () comme ceci:

S1.intern ()

Maintenant, je vais vous montrer l'implémentation et le fonctionnement du pool de chaînes à travers un exemple.

Mais avant cela, un petit rappel!

Comme vous le savez, si vous comparez 2 objets à l’aide de l’opérateur ==, il compare les adresses dans la mémoire.

Nous allons donc comparer les chaînes en utilisant == pour être complètement sûr qu'il s'agit du même objet ou non.

Maintenant, passons à notre processus de mise en œuvre.

Pool de chaînes en Java: diagramme de flux

Piscine à cordes - Edureka

Voyons maintenant ce qui se passe ici étape par étape:

  • La classe est chargée lorsque est invoquée.
  • JVM recherche tous les littéraux de chaîne dans le programme
  • Tout d'abord, il trouve la variable s1 qui fait référence au littéral «Apple» et il est créé dans la mémoire
  • Une référence pour le littéral «Apple» est ensuite placée dans la mémoire du pool de constantes de chaîne.
  • Ensuite, il trouve une autre variable s2 qui fait référence à la même chaîne littérale «Mango».
  • Ensuite, il trouve une autre variable s3 qui fait référence au littéral «Apple»
  • Maintenant que JVM a déjà trouvé une chaîne littérale «Apple», les deux variables s1 et s3 feront référence au même objet, c'est-à-dire «Apple».

Programme Java pour String Pool

public class StringPoolExperiment {public static void main (String [] args) {String s1 = 'Rachel' String s2 = 'Rachel' String s3 = new String ('Rachel') String s4 = new String ('Rachel'). intern ( ) System.out.println (s1 == s2) // vrai System.out.println (s1 == s3) // faux System.out.println (s1 == s4) // vrai}}

Production:

Vrai
Faux
Vrai

Dans l'exemple ci-dessus, vous pouvez clairement voir l'utilisation de l'initialisation de chaîne de trois manières, c'est-à-dire

String s1 = 'Rachel' String s2 = 'Rachel' String s3 = new String ('Rachel') String s4 = new String ('Rachel'). Intern ()

Le fonctionnement interne du programme devrait peut-être être clair maintenant.

différence entre surcharge et remplacement en c ++

Avec cela, je suis arrivé vers la fin de mon blog. J'espère que le contenu élaboré ici vous a aidé à élargir votre base de connaissances. Nous continuerons à plonger dans le monde Java. Restez à l'écoute!

Vérifiez par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. Le cours de formation et de certification Java J2EE et SOA d'Edureka est conçu pour les étudiants et les professionnels qui souhaitent devenir développeur Java. Le cours est conçu pour vous donner une longueur d'avance dans la programmation Java et vous former aux concepts Java de base et avancés ainsi que divers frameworks Java tels que Hibernate et Printemps .

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog «String Pool in Java» et nous vous répondrons dans les plus brefs délais.