Maison > Java > javaDidacticiel > le corps du texte

Pourquoi des chaînes peuvent-elles être créées sans le mot-clé « Nouveau » en Java ?

Susan Sarandon
Libérer: 2024-11-13 13:12:02
original
1013 Les gens l'ont consulté

Why Can Strings Be Created Without the 'New' Keyword in Java?

Chaînes : objets sans le mot-clé « Nouveau »

Les chaînes, bien qu'elles soient des objets en Java, peuvent être créées sans le nouveau mot-clé. Pour comprendre pourquoi, considérons l'exemple suivant :

Object obj = new Object();
Copier après la connexion

Ce code crée une instance de la classe Object à l'aide du nouveau mot-clé. Cependant, lors de la création d'une chaîne, nous utilisons une syntaxe différente :

String str = "Hello World";
Copier après la connexion

Littéraux de chaîne internes

La raison de cette différence réside dans le traitement par Java des littéraux de chaîne. Les chaînes littérales, telles que « Hello World », sont internées, ce qui signifie qu'elles sont stockées dans un pool de chaînes central. Chaque fois qu'un littéral String est rencontré, Java vérifie dans le pool une instance existante. Si la chaîne est trouvée dans le pool, Java renvoie une référence à cette instance au lieu d'en créer une nouvelle.

Considérez le code suivant :

String a = "abcd";
String b = "abcd";

System.out.println(a == b); // Output: True
Copier après la connexion

Puisque a et b font tous deux référence à le même littéral de chaîne, ils sont physiquement égaux (c'est-à-dire qu'ils pointent vers le même objet).

Chaînes personnalisées avec « Nouveau »

Bien que l'internement soit bénéfique pour l'efficacité , il est possible de créer des instances String personnalisées en utilisant new. Par exemple :

String a = new String("abcd");
String b = new String("abcd");

System.out.println(a == b); // Output: False
Copier après la connexion

Dans ce cas, a et b sont des objets String différents créés à l'aide de new.

Avantages du stage

String String Les littéraux améliorent les performances car ils éliminent le besoin de créer plusieurs instances de la même chaîne. Ceci est particulièrement utile lorsque les chaînes sont utilisées plusieurs fois dans un programme. Par exemple, dans le code suivant :

for (int i = 0; i < 10; i++) {
  System.out.println("Next iteration");
}
Copier après la connexion

La chaîne "Next itération" n'est instanciée qu'une seule fois en raison de l'internement, même si elle est utilisée en boucle. Sans internement, chaque itération de boucle nécessiterait une nouvelle instance de String, gaspillant potentiellement de la mémoire.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal