Maison >Java >javaDidacticiel >Pourquoi des chaînes peuvent-elles être créées sans le mot-clé « Nouveau » en 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();
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";
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
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
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"); }
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!