Pourquoi la chaîne de caractères est-elle immuable en Java est l’une des questions d’entretien les plus populaires. La chaîne de caractères est l’une des classes les plus utilisées dans n’importe quel langage de programmation. Nous savons que la chaîne de caractères est immuable et finale en Java. L’exécution de Java maintient un pool de chaînes qui en fait une classe spéciale.
Pourquoi la chaîne de caractères est-elle immuable en Java?
Examinons certains des avantages de l’immutabilité des chaînes, ce qui aidera à comprendre pourquoi la chaîne de caractères est immuable en Java.
- Le pool de chaînes est possible uniquement parce que la chaîne de caractères est immuable en Java. De cette manière, l’exécution de Java économise beaucoup d’espace mémoire car différentes variables de chaîne peuvent se référer à la même variable de chaîne dans le pool. Si la chaîne n’avait pas été immuable, l’internement des chaînes n’aurait pas été possible, car si une variable avait changé de valeur, cela aurait été reflété dans les autres variables également.
- Si la chaîne de caractères n’est pas immuable, cela pourrait causer une grave menace pour la sécurité de l’application. Par exemple, le nom d’utilisateur et le mot de passe de la base de données sont transmis en tant que chaîne de caractères pour établir une connexion à la base de données, et dans la programmation socket, les détails de l’hôte et du port sont transmis en tant que chaîne de caractères. Étant donné que la chaîne de caractères est immuable, sa valeur ne peut pas être modifiée, sinon un pirate informatique pourrait changer la valeur référencée pour causer des problèmes de sécurité dans l’application.
- Étant donné que la chaîne de caractères est immuable, elle est sûre pour le multithreading. Une seule instance de chaîne de caractères peut être partagée entre différents threads. Cela évite l’utilisation de la synchronisation pour la sécurité des threads. Les chaînes de caractères sont implicitement sécurisées pour le multithreading.
- Les chaînes de caractères sont utilisées dans le chargeur de classes Java et l’immutabilité garantit que la classe correcte est chargée par le chargeur de classes. Par exemple, imaginez un cas où vous essayez de charger la classe
java.sql.Connection
, mais la valeur référencée est modifiée pour la classemyhacked.Connection
qui pourrait faire des choses indésirables à votre base de données. - Étant donné que la chaîne de caractères est immuable, son code de hachage est mis en cache lors de la création et n’a pas besoin d’être recalculé. Cela en fait un excellent candidat pour la clé dans une carte (Map), et son traitement est plus rapide que celui d’autres objets clés de HashMap. C’est pourquoi la chaîne de caractères est la plus largement utilisée comme clé dans les HashMap.
Ci-dessus sont quelques-unes des raisons auxquelles je peux penser qui montrent les avantages de l’immutabilité des chaînes de caractères. C’est une fonctionnalité formidable de la classe String Java et qui la rend spéciale. Lisez cet article pour savoir comment écrire votre propre classe immuable.
Vous pouvez consulter plus d’exemples de chaînes de caractères Java dans notre Dépôt GitHub.
Source:
https://www.digitalocean.com/community/tutorials/string-immutable-final-java