logo

Onveranderlijke tekenreeks in Java

Een String is een onvermijdelijk type variabele bij het schrijven van een toepassingsprogramma. Tekenreeksreferenties worden gebruikt om verschillende attributen op te slaan, zoals gebruikersnaam, wachtwoord, enz. In Java String-objecten zijn onveranderlijk . Onveranderlijk betekent eenvoudigweg onveranderlijk of onveranderlijk.

Zodra het String-object is gemaakt, kunnen de gegevens of de status ervan niet meer worden gewijzigd, maar wordt er een nieuw String-object gemaakt.

Laten we proberen het concept van onveranderlijkheid te begrijpen aan de hand van het onderstaande voorbeeld:

Testonveranderlijkestring.java

 class Testimmutablestring{ public static void main(String args[]){ String s='Sachin'; s.concat(' Tendulkar');//concat() method appends the string at the end System.out.println(s);//will print Sachin because strings are immutable objects } } 
Test het nu

Uitgang:

 Sachin 

Nu kan het worden begrepen aan de hand van het onderstaande diagram. Hier wordt Sachin niet gewijzigd, maar wordt er een nieuw object gemaakt met Sachin Tendulkar. Daarom staat String bekend als onveranderlijk.

Onveranderlijke tekenreeks in Java

Zoals je in de bovenstaande figuur kunt zien, worden er maar twee objecten gemaakt S referentievariabele verwijst nog steeds naar 'Sachin' en niet naar 'Sachin Tendulkar'.

Maar als we het expliciet aan de referentievariabele toewijzen, zal het verwijzen naar het 'Sachin Tendulkar'-object.

Bijvoorbeeld:

Testonveranderlijkestring1.java

 class Testimmutablestring1{ public static void main(String args[]){ String s='Sachin'; s=s.concat(' Tendulkar'); System.out.println(s); } } 
Test het nu

Uitgang:

 Sachin Tendulkar 

In zo’n geval wijst s naar de ‘Sachin Tendulkar’. Houd er rekening mee dat het Sachin-object nog steeds niet is gewijzigd.

Waarom zijn String-objecten onveranderlijk in Java?

Omdat Java het concept van String letterlijk gebruikt. Stel dat er 5 referentievariabelen zijn, die allemaal verwijzen naar één object 'Sachin'. Als één referentievariabele de waarde van het object verandert, wordt deze beïnvloed door alle referentievariabelen. Dat is de reden waarom String-objecten onveranderlijk zijn in Java.

Hieronder volgen enkele kenmerken van String die String-objecten onveranderlijk maken.

1. ClassLoader:

Een ClassLoader in Java gebruikt een String-object als argument. Bedenk dat als het String-object wijzigbaar is, de waarde kan worden gewijzigd en dat de klasse die moet worden geladen, anders kan zijn.

Om dit soort verkeerde interpretaties te voorkomen, is String onveranderlijk.

2. Veilig inrijgen:

Omdat het String-object onveranderlijk is, hoeven we niet te zorgen voor de synchronisatie die vereist is bij het delen van een object over meerdere threads.

middelste knop css

3. Beveiliging:

Zoals we hebben gezien bij het laden van klassen, voorkomen onveranderlijke String-objecten verdere fouten door de juiste klasse te laden. Dit leidt ertoe dat het applicatieprogramma veiliger wordt. Neem een ​​voorbeeld van banksoftware. De gebruikersnaam en het wachtwoord kunnen door geen enkele indringer worden gewijzigd, omdat String-objecten onveranderlijk zijn. Dit kan het applicatieprogramma veiliger maken.

4. Hoopruimte:

De onveranderlijkheid van String helpt het gebruik in het heapgeheugen te minimaliseren. Wanneer we proberen een nieuw String-object te declareren, controleert de JVM of de waarde al in de String-pool bestaat of niet. Als deze bestaat, wordt dezelfde waarde aan het nieuwe object toegewezen. Met deze functie kan Java de heapruimte efficiënt gebruiken.

Waarom is de String-klasse definitief in Java?

De reden dat de klasse String definitief is, is omdat niemand de methoden van de klasse String kan overschrijven. Zodat het dezelfde functies kan bieden aan de nieuwe String-objecten als aan de oude.