Maison >Java >javaDidacticiel >Pool de chaînes Java : tas ou pile : où réside un objet chaîne ?

Pool de chaînes Java : tas ou pile : où réside un objet chaîne ?

DDD
DDDoriginal
2024-12-17 21:14:12905parcourir

Java String Pool: Heap or Stack—Where Does a String Object Reside?

Java String Pool : allocation de pile par rapport au stockage de tas

Considérez l'extrait de code :

String first = "abc"; 
String second = new String("abc");

Instanciation d'un Un nouvel objet String avec le mot-clé new crée un objet String distinct sur le tas. Contrairement à d'autres primitives, les objets String sont immuables, ce qui signifie qu'ils ne peuvent pas être modifiés après l'initialisation.

Cependant, Java maintient un pool de chaînes dans le tas, qui stocke un nombre limité de chaînes couramment utilisées. Lorsqu'une chaîne littérale (entre guillemets doubles) est définie, le compilateur vérifie dans le pool de chaînes une chaîne correspondante existante. S'il est trouvé, la chaîne littérale fera référence à la chaîne existante dans le pool, garantissant ainsi l'efficacité de la mémoire.

Dans cet exemple, puisque "abc" est une chaîne littérale, elle sera placée dans le pool de chaînes.

Maintenant, considérons le nouvel objet String créé avec new String("abc") :

  • Un nouvel objet String est créé sur le tas, pas dans le pool String.
  • Bien qu'il s'agisse d'une copie du littéral "abc", cet objet ne sera pas stocké dans le pool String.

Par conséquent, notre code aboutit à une chaîne dans le pool de chaînes ("abc"") et une chaîne distincte sur le tas (celle créée avec le nouveau Chaîne("abc")).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn