Maison > Java > javaDidacticiel > le corps du texte

Introduction aux raisons de l'immuabilité de String

不言
Libérer: 2019-03-23 11:17:11
avant
2879 Les gens l'ont consulté

Le contenu de cet article est une introduction aux raisons de l'immuabilité de String. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Dans l'interview à Maoyan, l'intervieweur a demandé pourquoi les chaînes String sont inchangées. Ma réponse à ce moment-là était que la classe String avait été modifiée avec le mot-clé final. Lorsqu'on m'a demandé pourquoi elle était immuable lorsqu'elle était modifiée avec final, j'ai trouvé que ce que j'avais dit n'avait aucun sens. Ensuite, j'ai spécifiquement vérifié pourquoi.

L'invariance de String, comme le montre la figure ci-dessous, lorsque vous modifiez s, s pointe vers un nouvel objet et l'objet d'origine ne change pas.

Introduction aux raisons de limmuabilité de String

Regardez comment le code source est implémenté :

Introduction aux raisons de limmuabilité de String

On voit que String est défini comme final, donc String Ce n'est pas héritable. Nous voyons ensuite que l'implémentation interne de String est un tableau de caractères et est définie comme finale. À l'heure actuelle, certaines personnes peuvent penser que le champ modifié final ne peut pas être modifié après sa création, donc c'est terminé, mais ce n'est pas le cas.

Car bien que la valeur soit immuable, seule l'adresse de référence de la valeur est immuable. Mais le tableau Array auquel il fait référence est mutable.

final int[] value={1,2,3};
value[2]=100;  //这时候数组里已经是{1,2,100}
Copier après la connexion

Donc, fondamentalement, la raison pour laquelle String est immuable est que les ingénieurs de Sun ont très bien encapsulé le tableau de valeurs et ne modifient pas le tableau de valeurs dans toutes les méthodes, le définissent comme privé et mettent Set the Chaîne entière en final et interdire l'héritage pour éviter d'être détruit par d'autres après l'héritage. La clé de l’immuabilité de String n’est donc pas le rôle de final.

Dans le même temps, afin d'éviter de prendre beaucoup de place en raison de l'immuabilité de String, les rédacteurs Java ont conçu un pool de constantes de chaînes

String one = "someString";
String two = "someString";
Copier après la connexion

Introduction aux raisons de limmuabilité de String

Cet article L'article est partout ici. Pour plus d'autres contenus passionnants, vous pouvez faire attention à la colonne Java Video Tutorial du site Web PHP chinois !

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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal