Quand utiliser String#intern() sur les littéraux de chaîne
String#intern() renvoie la chaîne existante du pool de chaînes si elle est présente ou l'ajoute et renvoie la référence ajoutée. Bien que les littéraux de chaîne soient automatiquement internés, il peut toujours être nécessaire d'invoquer intern() manuellement dans certains scénarios.
Internement automatique des littéraux de chaîne
Dans l'exemple de code fourni :
String s1 = "Rakesh"; String s2 = "Rakesh"; String s3 = "Rakesh".intern();
S1 et s3 représentent tous deux la même chaîne, car l'interning est implicitement appliqué à String littéraux en Java. C'est pourquoi les deux lignes, s1 == s2 et s1 == s3, sont évaluées à true.
Cas d'utilisation pour intern()
L'utilisation d'intern() est pertinente lorsqu'il s'agit de chaînes qui ne sont pas des chaînes littérales. Par exemple :
String s1 = "Rakesh"; String s2 = "Rakesh"; String s3 = new String("Rakesh"); String s4 = new String("Rakesh").intern();
Dans cet exemple, s1, s2 et s4 représentent la même chaîne dans le pool de constantes en raison de l'internement automatique ou de l'invocation explicite de intern(). Cependant, s3 fait référence à une nouvelle instance de String qui ne se trouve pas dans le pool de constantes.
En appelant explicitement intern() sur s4, il vérifie effectivement si "Rakesh" existe déjà dans le pool de String. Sinon, il l'ajoute et renvoie la référence de la chaîne ajoutée. Cela optimise l'utilisation de String en réduisant les objets String en double en mémoire et en favorisant les comparaisons d'égalité de chaînes.
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!