Comprendre l'initialisation de chaîne unique de Java
Malgré la nature orientée objet de Java, l'initialisation de chaînes à l'aide de guillemets doubles soulève des questions. Comment est-ce possible si les chaînes appartiennent à la structure de classe ?
Chaîne spécialisée de Java
Les concepteurs de Java ont cherché à conserver les types primitifs dans un cadre orienté objet pour optimiser les performances. Les primitives sont hébergées dans la pile d'appels, réduisant ainsi l'utilisation de la mémoire et les coûts de manipulation. Pendant ce temps, les objets occupent le tas du programme, ce qui implique une gestion complexe de la mémoire et des besoins de stockage plus importants.
Pour combler ce fossé, la chaîne Java a été conçue pour posséder les caractéristiques des primitives et des classes.
Littéraux et objets de chaîne
Considérez les exemples suivants :
String s1 = "Hello"; // String literal String s2 = "Hello"; // String literal String s3 = s1; // Same reference String s4 = new String("Hello"); // String object String s5 = new String("Hello"); // String object
L'image liée ci-dessous illustre ceci :
[Image du pool de chaînes et du stockage en tas]
Les littéraux de chaîne (s1 et s2) partagent le stockage au sein d'un pool commun, économisant ainsi la mémoire. Cependant, les objets String (s4 et s5) résident dans le tas et ne sont pas partagés.
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!