logo

Muuttumaton merkkijono Javassa

Merkkijono on väistämätön muuttujatyyppi mitä tahansa sovellusohjelmaa kirjoitettaessa. Merkkijonoviittauksia käytetään erilaisten attribuuttien, kuten käyttäjänimen, salasanan jne. tallentamiseen. Javassa Merkkijonoobjektit ovat muuttumattomia . Muuttumaton tarkoittaa yksinkertaisesti muuttumatonta tai muuttumatonta.

Kun merkkijono-objekti on luotu, sen tietoja tai tilaa ei voi muuttaa, mutta uusi merkkijono-objekti luodaan.

Yritetään ymmärtää muuttumattomuuden käsite alla olevan esimerkin avulla:

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 } } 
Testaa nyt

Lähtö:

 Sachin 

Nyt se voidaan ymmärtää alla olevan kaavion avulla. Tässä Sachinia ei muuteta, vaan uusi objekti luodaan Sachin Tendulkarilla. Tästä syystä String tunnetaan muuttumattomana.

Muuttumaton merkkijono Javassa

Kuten yllä olevasta kuvasta näet, luodaan kaksi objektia, mutta s viitemuuttuja viittaa edelleen 'Sachin'iin, ei 'Sachin Tendulkariin'.

taulukoita javassa

Mutta jos annamme sen nimenomaisesti viitemuuttujalle, se viittaa 'Sachin Tendulkar' -objektiin.

Esimerkiksi:

Testimmutablestring1.java

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

Lähtö:

 Sachin Tendulkar 

Siinä tapauksessa s osoittaa 'Sachin Tendulkariin'. Huomaa, että silti Sachin-objektia ei ole muokattu.

Miksi merkkijono-objektit ovat muuttumattomia Javassa?

Kuten Java käyttää käsitettä String literal. Oletetaan, että viitemuuttujia on 5, kaikki viittaavat yhteen objektiin 'Sachin'. Jos yksi viitemuuttuja muuttaa kohteen arvoa, kaikki viitemuuttujat vaikuttavat siihen. Tästä syystä merkkijono-oliot ovat muuttumattomia Javassa.

yhdistä lajittelu javassa

Seuraavassa on joitain Stringin ominaisuuksia, jotka tekevät merkkijono-objekteista muuttumattomia.

1. ClassLoader:

Javan ClassLoader käyttää argumenttina String-objektia. Harkitse, jos String-objekti on muokattavissa, arvo saattaa muuttua ja ladattava luokka voi olla erilainen.

Tällaisten väärintulkintojen välttämiseksi merkkijono on muuttumaton.

2. Langaton:

Koska String-objekti on muuttumaton, meidän ei tarvitse huolehtia synkronoinnista, joka vaaditaan jaettaessa objektia useiden säikeiden kesken.

tavutaulukko merkkijonoon java

3. Turvallisuus:

Kuten olemme nähneet luokan latauksessa, muuttumattomat String-oliot välttävät lisävirheitä lataamalla oikean luokan. Tämä tekee sovellusohjelmasta turvallisemman. Harkitse esimerkkiä pankkiohjelmistosta. Yksikään tunkeilija ei voi muuttaa käyttäjätunnusta ja salasanaa, koska merkkijono-objektit ovat muuttumattomia. Tämä voi tehdä sovellusohjelmasta turvallisemman.

4. Keon tila:

Stringin muuttumattomuus auttaa minimoimaan kasamuistin käyttöä. Kun yritämme ilmoittaa uuden merkkijono-objektin, JVM tarkistaa, onko arvo jo olemassa merkkijonovarannossa vai ei. Jos se on olemassa, sama arvo annetaan uudelle objektille. Tämän ominaisuuden avulla Java voi käyttää kasatilaa tehokkaasti.

Miksi merkkijonoluokka on lopullinen Javassa?

Syy siihen, että String-luokka on lopullinen, on se, että kukaan ei voi ohittaa String-luokan menetelmiä. Jotta se voi tarjota samat ominaisuudet uusille merkkijono-objekteille sekä vanhoille.