String je nezaobilazna vrsta varijable pri pisanju bilo kojeg aplikacijskog programa. Reference nizova koriste se za pohranjivanje raznih atributa poput korisničkog imena, lozinke itd. U Javi, String objekti su nepromjenjivi . Nepromjenjivo jednostavno znači nepromjenjivo ili nepromjenjivo.
cijeli broj u niz
Nakon što se String objekt stvori, njegovi podaci ili stanje ne mogu se promijeniti, ali se stvara novi String objekt.
Pokušajmo razumjeti koncept nepromjenjivosti na donjem primjeru:
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 } }Testirajte sada
Izlaz:
Sachin
Sada se to može razumjeti dijagramom danim u nastavku. Ovdje se Sachin ne mijenja, već se stvara novi objekt sa Sachin Tendulkar. Zato je String poznat kao nepromjenjiv.
Kao što možete vidjeti na gornjoj slici, stvorena su dva objekta, ali s referentna varijabla i dalje se odnosi na 'Sachin' ne na 'Sachin Tendulkar'.
Ali ako ga eksplicitno dodijelimo referentnoj varijabli, odnosit će se na objekt 'Sachin Tendulkar'.
Na primjer:
Testimmjenljivi niz1.java
podniz metode java
class Testimmutablestring1{ public static void main(String args[]){ String s='Sachin'; s=s.concat(' Tendulkar'); System.out.println(s); } }Testirajte sada
Izlaz:
Sachin Tendulkar
U tom slučaju, s ukazuje na 'Sachin Tendulkar'. Imajte na umu da još uvijek Sachin objekt nije izmijenjen.
Zašto su String objekti nepromjenjivi u Javi?
Kako Java koristi koncept String literala. Pretpostavimo da postoji 5 referentnih varijabli, sve se odnose na jedan objekt 'Sachin'. Ako jedna referentna varijabla promijeni vrijednost objekta, na nju će utjecati sve referentne varijable. Zato su String objekti nepromjenjivi u Javi.
Slijede neke značajke Stringa koje objekte String čine nepromjenjivima.
1. ClassLoader:
ClassLoader u Javi koristi String objekt kao argument. Uzmite u obzir, ako je objekt String moguće mijenjati, vrijednost bi se mogla promijeniti i klasa koja bi se trebala učitati mogla bi biti drugačija.
Da bi se izbjegla ova vrsta pogrešnog tumačenja, String je nepromjenjiv.
2. Sigurnost niti:
Budući da je String objekt nepromjenjiv, ne moramo voditi računa o sinkronizaciji koja je potrebna dok dijelimo objekt u više niti.
3. Sigurnost:
Kao što smo vidjeli kod učitavanja klase, nepromjenjivi String objekti izbjegavaju daljnje pogreške učitavanjem ispravne klase. To dovodi do toga da aplikacijski program bude sigurniji. Razmotrite primjer bankarskog softvera. Korisničko ime i lozinku ne može mijenjati nijedan uljez jer su String objekti nepromjenjivi. Ovo može učiniti aplikacijski program sigurnijim.
apstraktna klasa u Javi
4. Prostor gomile:
Nepromjenjivost Stringa pomaže minimizirati korištenje heap memorije. Kada pokušamo deklarirati novi String objekt, JVM provjerava postoji li vrijednost već u String skupu ili ne. Ako postoji, ista se vrijednost dodjeljuje novom objektu. Ova značajka omogućuje Javi da učinkovito koristi prostor gomile.
Zašto je klasa String Final u Javi?
Razlog zašto je klasa String konačna je taj što nitko ne može nadjačati metode klase String. Tako da može pružiti iste značajke novim String objektima kao i starim.