Waarom is String onveranderlijk in Java?

Waarom String onveranderlijk is in Java is een van de populaire interviewvragen. De string is een van de meest gebruikte klassen in een programmeertaal. We weten dat String onveranderlijk en definitief is in Java. De Java-runtime onderhoudt een Stringpool die het een speciale klasse maakt.

Waarom String onveranderlijk is in Java?

Laten we eens kijken naar enkele voordelen van String-onveranderlijkheid, die helpen begrijpen waarom String onveranderlijk is in Java.

  1. Stringpool is alleen mogelijk omdat String onveranderlijk is in Java. Op deze manier bespaart de Java-runtime veel heapruimte, omdat verschillende String-variabelen kunnen verwijzen naar dezelfde String-variabele in de pool. Als String niet onveranderlijk zou zijn, zou String-internering niet mogelijk zijn omdat als een variabele de waarde zou veranderen, dit ook zou worden weerspiegeld in de andere variabelen.
  2. Als String niet onveranderlijk is, zou dit een ernstige beveiligingsdreiging voor de applicatie veroorzaken. Bijvoorbeeld, gebruikersnaam en wachtwoord voor de database worden als String doorgegeven om een databaseverbinding te krijgen en in socket programmeren worden host- en poortgegevens als String doorgegeven. Aangezien String onveranderlijk is, kan de waarde niet worden gewijzigd, anders zou een hacker de gerefereerde waarde kunnen wijzigen om beveiligingsproblemen in de applicatie te veroorzaken.
  3. Aangezien String onveranderlijk is, is het veilig voor multithreading. Een enkele String-instantie kan worden gedeeld over verschillende threads. Dit vermijdt het gebruik van synchronisatie voor threadveiligheid. Strings zijn impliciet threadveilig.
  4. Strings worden gebruikt in Java ClassLoader en onveranderlijkheid biedt beveiliging dat de juiste klasse wordt geladen door de ClassLoader. Stel je bijvoorbeeld een situatie voor waarin je probeert de klasse java.sql.Connection te laden, maar de gerefereerde waarde is gewijzigd naar de klasse myhacked.Connection die ongewenste handelingen met je database kan uitvoeren.
  5. Aangezien String onveranderlijk is, wordt de hashcode ervan gecachet op het moment van creatie en hoeft deze niet opnieuw te worden berekend. Dit maakt het een uitstekende kandidaat voor de sleutel in een Map en de verwerking ervan is sneller dan andere HashMap-sleutelobjecten. Daarom wordt String het meest gebruikt als HashMap-sleutels.

Hierboven staan enkele redenen die ik kon bedenken die de voordelen van String onveranderlijkheid tonen. Het is een geweldige functie van de Java String klasse en maakt het speciaal. Lees deze post om te weten hoe je je eigen onveranderlijke klasse schrijft.

Je kunt meer Java String voorbeelden bekijken uit onze GitHub Repository.

Source:
https://www.digitalocean.com/community/tutorials/string-immutable-final-java