logo

Uforanderlig streng i Java

En streng er en uunngåelig type variabel mens du skriver et hvilket som helst program. Strengreferanser brukes til å lagre ulike attributter som brukernavn, passord osv. I Java, Strengeobjekter er uforanderlige . Uforanderlig betyr ganske enkelt uforanderlig eller uforanderlig.

Når String-objektet er opprettet, kan dets data eller tilstand ikke endres, men et nytt String-objekt opprettes.

La oss prøve å forstå begrepet uforanderlighet ved hjelp av eksemplet nedenfor:

Testimmutablestring.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 det nå

Produksjon:

 Sachin 

Nå kan det forstås av diagrammet nedenfor. Her er ikke Sachin endret, men et nytt objekt opprettes med Sachin Tendulkar. Det er derfor String er kjent som uforanderlig.

Uforanderlig streng i Java

Som du kan se i figuren ovenfor er det opprettet to objekter, men s referansevariabelen refererer fortsatt til 'Sachin' ikke til 'Sachin Tendulkar'.

Men hvis vi eksplisitt tildeler den til referansevariabelen, vil den referere til 'Sachin Tendulkar'-objektet.

For eksempel:

Testimmutablestring1.java

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

Produksjon:

streng json java
 Sachin Tendulkar 

I et slikt tilfelle peker s på 'Sachin Tendulkar'. Vær oppmerksom på at Sachin-objektet fortsatt ikke er endret.

Hvorfor String-objekter er uforanderlige i Java?

Som Java bruker konseptet String literal. Anta at det er 5 referansevariabler, alle refererer til ett objekt 'Sachin'. Hvis en referansevariabel endrer verdien til objektet, vil den bli påvirket av alle referansevariablene. Det er derfor String-objekter er uforanderlige i Java.

Følgende er noen funksjoner i String som gjør String-objekter uforanderlige.

1. ClassLoader:

En ClassLoader i Java bruker et String-objekt som et argument. Tenk på at hvis String-objektet kan endres, kan verdien endres og klassen som skal lastes kan være annerledes.

For å unngå denne typen feiltolkning er String uforanderlig.

2. Trådsikker:

Siden String-objektet er uforanderlig, trenger vi ikke å ta vare på synkroniseringen som kreves mens vi deler et objekt på tvers av flere tråder.

3. Sikkerhet:

Som vi har sett i klasselasting, unngår uforanderlige String-objekter ytterligere feil ved å laste inn riktig klasse. Dette fører til å gjøre applikasjonsprogrammet sikrere. Tenk på et eksempel på bankprogramvare. Brukernavnet og passordet kan ikke endres av noen inntrenger fordi strengobjekter er uforanderlige. Dette kan gjøre applikasjonsprogrammet sikrere.

4. Heap Space:

Uforanderligheten til String bidrar til å minimere bruken i haugminnet. Når vi prøver å deklarere et nytt String-objekt, sjekker JVM om verdien allerede eksisterer i String-poolen eller ikke. Hvis den eksisterer, tildeles den samme verdien til det nye objektet. Denne funksjonen lar Java bruke haugplassen effektivt.

int til char java

Hvorfor er strengklassen endelig i Java?

Årsaken til at String-klassen er endelig er fordi ingen kan overstyre metodene til String-klassen. Slik at den kan gi de samme funksjonene til de nye String-objektene så vel som til de gamle.