Niz je neizogiben tip spremenljivke pri pisanju katerega koli aplikacijskega programa. Sklici na nize se uporabljajo za shranjevanje različnih atributov, kot so uporabniško ime, geslo itd. Objekti nizov so nespremenljivi . Nespremenljivo preprosto pomeni nespremenljivo ali nespremenljivo.
Ko je objekt String ustvarjen, njegovih podatkov ali stanja ni mogoče spremeniti, vendar je ustvarjen nov objekt String.
Poskusimo razumeti koncept nespremenljivosti s spodnjim primerom:
java ponovi zemljevid
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 } }Preizkusite zdaj
Izhod:
Sachin
Zdaj je to mogoče razumeti s spodnjim diagramom. Tu Sachin ni spremenjen, ampak je s Sachin Tendulkar ustvarjen nov predmet. Zato je niz znan kot nespremenljiv.
Kot lahko vidite na zgornji sliki, sta ustvarjena dva predmeta, vendar s referenčna spremenljivka se še vedno nanaša na 'Sachin' in ne na 'Sachin Tendulkar'.
Če pa ga izrecno dodelimo referenčni spremenljivki, se bo nanašal na objekt 'Sachin Tendulkar'.
Na primer:
Testimmutablestring1.java
class Testimmutablestring1{ public static void main(String args[]){ String s='Sachin'; s=s.concat(' Tendulkar'); System.out.println(s); } }Preizkusite zdaj
Izhod:
ups v javi
Sachin Tendulkar
V takem primeru s kaže na 'Sachin Tendulkar'. Upoštevajte, da predmet Sachin še vedno ni spremenjen.
Zakaj so objekti String v Javi nespremenljivi?
Ker Java uporablja koncept dobesednega niza. Recimo, da obstaja 5 referenčnih spremenljivk, vse se nanašajo na en objekt 'Sachin'. Če ena referenčna spremenljivka spremeni vrednost predmeta, bodo nanjo vplivale vse referenčne spremenljivke. Zato so objekti String v Javi nespremenljivi.
Sledi nekaj funkcij Stringa, zaradi katerih so objekti String nespremenljivi.
1. ClassLoader:
ClassLoader v Javi kot argument uporablja objekt String. Če je objekt String mogoče spreminjati, se lahko vrednost spremeni in razred, ki naj bi se naložil, je lahko drugačen.
Da bi se izognili tovrstni napačni razlagi, je niz nespremenljiv.
2. Varno za nit:
Ker je objekt String nespremenljiv, nam ni treba skrbeti za sinhronizacijo, ki je potrebna med skupno rabo objekta v več nitih.
3. Varnost:
Kot smo videli pri nalaganju razreda, se nespremenljivi objekti String izognejo nadaljnjim napakam z nalaganjem pravilnega razreda. To vodi k večji varnosti aplikacijskega programa. Razmislite o primeru bančne programske opreme. Uporabniškega imena in gesla ne more spremeniti noben vsiljivec, ker so objekti String nespremenljivi. To lahko naredi aplikacijski program varnejši.
4. Prostor kopice:
Nespremenljivost niza pomaga zmanjšati uporabo pomnilnika kopice. Ko poskušamo deklarirati nov objekt String, JVM preveri, ali vrednost že obstaja v nizu ali ne. Če obstaja, je enaka vrednost dodeljena novemu objektu. Ta funkcija omogoča Javi, da učinkovito uporablja prostor kopice.
prenesite autocad 2019 english mediafire
Zakaj je razred String Final v Javi?
Razlog za to, da je razred String končen, je v tem, da nihče ne more preglasiti metod razreda String. Tako, da lahko zagotovi enake funkcije za nove objekte String kot tudi za stare.