Pool de constantes de chaîne : un examen approfondi
Les littéraux de chaîne en Java sont regroupés pour optimiser l'utilisation de la mémoire et améliorer les performances. Cela signifie que lorsqu'un littéral String est rencontré, le compilateur vérifie dans le pool de constantes String un objet String existant avec la même valeur. Si elle est trouvée, la référence est dirigée vers l'objet existant, évitant ainsi la création d'un nouvel objet.
Cependant, une confusion survient lors de l'utilisation de l'opérateur "new" pour créer un nouvel objet String, car cela semble contredire la règle. de stage. Pour clarifier cela, examinons les instructions suivantes :
Ces instructions indiquent que même si le littéral String est interné et stocké dans le pool, l'utilisation de "new" force la JVM à créer un nouvel objet String. Cela signifie que malgré l'existence d'une chaîne équivalente dans le pool, l'opérateur "new" le contourne et alloue un nouvel objet dans la mémoire non-pool.
Pour illustrer cela, considérons l'exemple suivant :
String one = new String("test"); String two = "test"; System.out.println(one.equals(two)); // true System.out.println(one == two); // false
Comme prévu, la valeur de "one" et "two" est "test", mais la comparaison "==" renvoie false car ils font référence à des objets String différents. En effet, l'utilisation de « new » force la création d'un nouvel objet String pour « one », même si le « test » littéral String existe déjà dans le pool.
En résumé, le pool de constantes String optimise utilisation de la mémoire en internant des littéraux de chaîne. Cependant, l’utilisation de « new » contourne le pool et crée un nouvel objet String dans la mémoire non-pool. Il en résulte deux objets String distincts avec la même valeur mais des références différentes.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3