Maison >Java >javaDidacticiel >Pourquoi les littéraux de chaîne sont-ils stockés dans un pool de constantes de chaîne en Java ?

Pourquoi les littéraux de chaîne sont-ils stockés dans un pool de constantes de chaîne en Java ?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBavant
2023-09-11 21:17:02826parcourir

Pourquoi les littéraux de chaîne sont-ils stockés dans un pool de constantes de chaîne en Java ?

Il existe deux façons de créer un objet String en Java

  • En utilisant le nouvel opérateur
String str = new String("Tutorials Point");
  • En utilisant la chaîne littérale
String str = "Tutorials Point";

Chaque fois que nous appelons new String() en Java, cela créera un objet dans mémoire tas, et la chaîne littérale ira dans le pool de constantes de chaîne (SCP).

Pour les objets, JVM utilise SCP, qui permet une gestion efficace de la mémoire en Java. Contrairement aux autres objets Java, ils ne gèrent pas les objets String dans la zone du tas, mais introduisent un pool de constantes String. Une caractéristique importante du pool de constantes String est que s’il existe déjà une constante String dans le pool, le même objet String ne sera pas créé.

Exemple

public class SCPDemo {
   public static void main (String args[]) {
      String s1 = "Tutorials Point";
      String s2 = "Tutorials Point";
      System.out.println("s1 and s2 are string literals:");
      System.out.println(s1 == s2);
      String s3 = new String("Tutorials Point");
      String s4 = new String("Tutorials Point");
      System.out.println("s3 and s4 with new operator:");
      System.out.println(s3 == s4);
   }
}

Sortie

s1 and s2 are string literals:
true
s3 and s4 with new operator:
false

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer