Quand utiliser la méthode interne pour les chaînes littérales
Les chaînes créées à l'aide de la syntaxe littérale ("String") sont automatiquement internées dans le pool de chaînes par JVM. Par conséquent, l'opérateur == se comporte de manière cohérente pour les littéraux de chaîne.
Cependant, l'internement n'est pas automatique pour les chaînes créées avec new String(). C'est là que la méthode intern() devient pertinente.
L'utilisation de la méthode intern() sur une chaîne créée avec new String() ajoutera cette chaîne au pool et renverra l'instance d'objet existante si la même chaîne est déjà existe dans le pool.
Par exemple :
String s1 = "Rakesh"; String s2 = "Rakesh"; String s3 = "Rakesh".intern(); String s4 = new String("Rakesh"); String s5 = new String("Rakesh").intern(); if (s1 == s2) { System.out.println("s1 and s2 are same"); } if (s1 == s3) { System.out.println("s1 and s3 are same"); } if (s1 == s4) { System.out.println("s1 and s4 are same"); } if (s1 == s5) { System.out.println("s1 and s5 are same"); }
La sortie sera :
s1 and s2 are same s1 and s3 are same s1 and s5 are same
Dans tous les cas sauf pour s4, où la chaîne a été explicitement créée à l'aide de new et non internée, le pool de constantes de chaîne de la JVM renvoie la même instance immuable.
Reportez-vous aux techniques Java « Égalité des chaînes et internement » pour des informations plus détaillées.
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!