logo

Promjenjivi i nepromjenjivi u Javi

Java je objektno orijentirani programski jezik. Kako je riječ o objektno orijentiranom programskom jeziku, sve njegove metode i mehanizmi vrte se oko objekata. Jedan objektni koncept je promjenjiv i nepromjenjiv u Javi . Objekti u Javi su ili promjenjivi ili nepromjenjivi; ovisi o tome kako se objekt može ponoviti.

U ovom odjeljku raspravljat ćemo o promjenjivim i nepromjenjivim objektima u Javi. Nadalje, vidjet ćemo razliku između njih.

Što su promjenjivi objekti

Promjenjivi objekti su objekti čija se vrijednost može promijeniti nakon inicijalizacije. Vrijednosti objekta, kao što su polja i stanja, možemo promijeniti nakon što je objekt kreiran. Na primjer, java.util.Date , StringBuilder , StringBuffer itd.

Kada smo napravili promjenu u postojećim promjenjivim objektima, novi objekt neće biti kreiran; umjesto toga, promijenit će vrijednost postojećeg objekta. Ove klase objekta daju metode za promjene u njemu.

Getteri i postavljači (metode get() i set() dostupni su u promjenjivim objektima. Promjenjivi objekt može, ali ne mora biti niti siguran.

for petlja u bashu

Što su nepromjenjivi objekti

Nepromjenjivi objekti su objekti čija se vrijednost ne može promijeniti nakon inicijalizacije. Ne možemo ništa promijeniti kada je objekt kreiran. Na primjer, primitivni predmeti kao što je int, dugo , plutati , dvostruko , sve naslijeđene klase, Klasa omotača , Klasa niza itd.

Ukratko, nepromjenjivo znači nepromijenjeno ili nepromjenjivo. Nakon što su nepromjenjivi objekti stvoreni, njegove vrijednosti objekta i stanje ne mogu se mijenjati.

Za nepromjenjive objekte dostupni su samo Getteri (get() metoda), a ne Setteri (set() metoda).

indeks popisa

Pogledajmo kako stvoriti klase za promjenjive i nepromjenjive objekte.

Kako stvoriti promjenjivu klasu

Sljedeće dvije stvari bitne su za stvaranje promjenjive klase:

  • Metode za modificiranje vrijednosti polja
  • Getteri i postavljači objekata

Razmotrite donji primjer promjenjive klase:

 public class JtpExample { private String s; JtpExample(String s) { this.s = s; } public String getName() { return s; } public void setName(String coursename) { this.s = coursename; } public static void main(String[] args) { JtpExample obj = new JtpExample('JavaTpoint'); System.out.println(obj.getName()); // Here, we can update the name using the setName method. obj.setName('Java Training'); System.out.println(obj.getName()); } } 

Izlaz:

 JavaTpoint Java Training 

Iz gornjeg primjera mijenjamo vrijednost imena pomoću metode setName.

Kako stvoriti nepromjenjivu klasu

Sljedeće stvari su bitne za stvaranje nepromjenjive klase:

  • Konačna klasa, koja se deklarira kao konačna tako da se ne može produžiti.
  • Sva polja trebaju biti privatna tako da je izravan pristup poljima blokiran.
  • Nema postavljača
  • Sva promjenjiva polja trebaju biti konačna tako da se ne mogu ponavljati nakon inicijalizacije.

Razmotrite primjer u nastavku:

popis gimp fontova
 public class JtpExample1 { private final String s; JtpExample1(final String s) { this.s = s; } public final String getName() { return s; } public static void main(String[] args) { JtpExample obj = new JtpExample('Core Java Training'); System.out.println(obj.getName()); } } 

Izlaz:

 Core Java Training 

Dakle, raspravljali smo o promjenjivim i nepromjenjivim objektima i klasama. Raspravljajmo o razlikama između njih:

Razlika između promjenjivih i nepromjenjivih objekata

Slijede neke ključne razlike između promjenjivih i nepromjenjivih objekata u Java :

  • Promjenjivi objekti mogu se promijeniti u bilo koju vrijednost ili stanje bez dodavanja novog objekta. Dok se nepromjenjivi objekti ne mogu promijeniti u svoju vrijednost ili stanje nakon što su stvoreni. U slučaju nepromjenjivih objekata, kad god promijenimo stanje objekta, kreirat će se novi objekt.
  • Promjenjivi objekti pružaju metodu za promjenu sadržaja objekta. Za usporedbu, nepromjenjivi objekti ne pružaju nikakvu metodu za promjenu vrijednosti.
  • Promjenjivi objekti podržavaju i postavljače i dobivatelje. Usporedno, nepromjenjivi objekti podržavaju samo postavljače, ne i dobivače.
  • Promjenjivi objekti mogu i ne moraju biti niti sigurni, ali nepromjenjivi objekti su prema zadanim postavkama sigurni za niti.
  • Primjeri promjenjivih klasa su StringBuffer, Java.util.Date, StringBuilder itd. Dok su nepromjenjivi objekti naslijeđene klase, klase omotači, klase String itd.

Razmotrite donju tablicu:

Promjenjiv Nepromjenjivo
Možemo promijeniti vrijednost promjenjivih objekata nakon inicijalizacije. Jednom kada je nepromjenjivi objekt pokrenut; Ne možemo promijeniti njegove vrijednosti.
Stanje se može promijeniti. Stanje se ne može promijeniti.
U promjenjivim objektima ne nastaju novi objekti. U nepromjenjivim objektima, novi objekt se formira kada se vrijednost objekta promijeni.
Pruža metode za promjenu objekta. Ne pruža nikakvu metodu za promjenu vrijednosti objekta.
Podržava metode get() i set() za rad s objektom. Podržava samo metodu get() za prosljeđivanje vrijednosti objekta.
Promjenjive klase mogu, ali i ne moraju biti sigurne za niti. Nepromjenjive klase su sigurne za niti.
Osnove za stvaranje promjenjive klase su metode za modificiranje polja, gettera i postavljača. Osnove za stvaranje nepromjenjive klase su konačna klasa, privatna polja, konačni promjenjivi objekti.

Zašto su nizovi u Javi nepromjenjivi

String u Javi je vrlo posebna klasa, jer se koristi u gotovo svakom Java programu. Zato je nepromjenjivo poboljšati performanse i sigurnost. Razumimo to detaljno:

U Javi, nizovi koriste koncept literala. Pretpostavimo da imamo objekt koji ima mnogo referentnih varijabli. U takvom scenariju, ako promijenimo vrijednost referentne varijable, to će utjecati na cijeli objekt i sve njegove vrijednosti.

Osim gore navedenih razloga, sljedeći su razlozi također odgovorni za nepromjenjivost Stringa:

Nepromjenjivi objekti su vrlo jednostavni; nema potrebe za sinkronizacijom i inherentno su sigurni za niti. No, nepromjenjivi objekti čine dobre građevne blokove za druge objekte, pa im moramo pružiti posebnu brigu.

Većina programera čini String konačnim objektom tako da se kasnije ne može mijenjati.

poredak slučajnim sql-om

Zaključak

Raspravljali smo o promjenjivim i nepromjenjivim objektima u Javi, sada imamo jasno razumijevanje i promjenjivih i nepromjenjivih objekata i klasa. Nadalje, vidjeli smo kako stvoriti promjenjivu i nepromjenjivu klasu.

Napominje se da se nepromjenjivi objekti mogu promijeniti u svoju vrijednost i stanje nakon pokretanja i mogu, ali ne moraju biti niti sigurni. Za usporedbu, nepromjenjivi objekti ne mogu se promijeniti u svoje stanje i vrijednost i zadanu nit-safe.