logo

Vaihtuva ja muuttumaton Javassa

Java on olio-ohjelmointikieli. Koska se on olio-ohjelmointikieli, sen kaikki menetelmät ja mekanismit pyörivät objektien ympärillä. Yksi oliopohjainen käsite on muuttuva ja muuttumaton Javassa . Java-objektit ovat joko muuttuvia tai muuttumattomia; se riippuu siitä, kuinka objektia voidaan iteroida.

Tässä osiossa keskustelemme Javassa muuttuvista ja muuttumattomista objekteista. Lisäksi näemme eron niiden välillä.

Mitä ovat muuttuvat objektit

Muuttuvat objektit ovat objekteja, joiden arvoa voidaan muuttaa alustuksen jälkeen. Voimme muuttaa objektin arvoja, kuten kenttää ja tiloja, objektin luomisen jälkeen. Esimerkiksi, java.util.Date , StringBuilder , StringBuffer , jne.

Kun teimme muutoksen olemassa oleviin muuttuviin objekteihin, uutta objektia ei luoda; sen sijaan se muuttaa olemassa olevan objektin arvoa. Nämä objektien luokat tarjoavat menetelmiä muuttaa sitä.

Getterit ja asettajat ( get() ja set() -menetelmät ovat saatavilla muunnettavissa objekteissa. Mutable-objekti voi olla lankaturvallinen tai ei.

mikä on android pääsiäismuna

Mitä ovat muuttumattomat objektit

Muuttumattomat objektit ovat objekteja, joiden arvoa ei voi muuttaa alustuksen jälkeen. Emme voi muuttaa mitään, kun objekti on luotu. Esimerkiksi, primitiivisiä esineitä kuten int, pitkä , kellua , kaksinkertainen , kaikki perintöluokat, Wrapper luokka , Jousiluokka , jne.

Lyhyesti sanottuna muuttumaton tarkoittaa muuntamatonta tai muuttumatonta. Kun muuttumattomat objektit on luotu, sen objektin arvoja ja tilaa ei voi muuttaa.

Vain Getterit ( get()-metodi) ovat käytettävissä, eivät asettajat (set()-metodi) muuttumattomille objekteille.

Katsotaanpa kuinka luodaan luokkia muuttuville ja muuttumattomille objekteille.

Kuinka luoda vaihtuva luokka

Seuraavat kaksi asiaa ovat välttämättömiä muuttuvan luokan luomiseksi:

  • Kentän arvojen muuttamismenetelmät
  • Esineiden saajat ja asettajat

Harkitse alla olevaa esimerkkiä muuttuvasta luokasta:

yliviivaus
 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()); } } 

Lähtö:

 JavaTpoint Java Training 

Yllä olevasta esimerkistä muutamme nimen arvoa setName-menetelmällä.

Muuttumattoman luokan luominen

Seuraavat asiat ovat välttämättömiä muuttumattoman luokan luomiseksi:

  • Loppuluokka, joka julistetaan lopulliseksi, jotta sitä ei voida jatkaa.
  • Kaikkien kenttien tulee olla yksityisiä, jotta suora pääsy kenttiin estetään.
  • Ei settereitä
  • Kaikkien muunnettavien kenttien tulee olla lopullisia, jotta niitä ei voida toistaa alustuksen jälkeen.

Harkitse alla olevaa esimerkkiä:

 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()); } } 

Lähtö:

 Core Java Training 

Siksi olemme keskustelleet muuttuvista ja muuttumattomista objekteista ja luokista. Keskustellaan niiden välisistä eroista:

Ero muuttumattomien ja muuttumattomien objektien välillä

Seuraavassa on joitain keskeisiä eroja muuttuvien ja muuttumattomien objektien välillä Java :

python-tulostus 2 desimaalin tarkkuudella
  • Muuttuvat objektit voidaan muuttaa mihin tahansa arvoon tai tilaan lisäämättä uutta objektia. Sen sijaan muuttumattomia objekteja ei voi muuttaa arvoonsa tai tilaansa, kun ne on luotu. Muuttumattomien objektien tapauksessa aina kun muutamme objektin tilaa, luodaan uusi objekti.
  • Muuttuvat objektit tarjoavat menetelmän objektin sisällön muuttamiseen. Vertailun vuoksi muuttumattomat objektit eivät tarjoa mitään menetelmää arvojen muuttamiseksi.
  • Muuttuvat objektit tukevat sekä settereitä että gettereitä. Vertailun vuoksi muuttumattomat objektit tukevat vain asettajia, eivät saajia.
  • Muuttuvat objektit voivat olla säikeen turvallisia tai eivät, mutta muuttumattomat objektit ovat oletuksena säikeen turvallisia.
  • Muuttuvat luokkaesimerkit ovat StringBuffer, Java.util.Date, StringBuilder jne. Muuttumattomat objektit ovat vanhoja luokkia, kääreluokkia, merkkijonoluokkaa jne.

Harkitse alla olevaa taulukkoa:

Vaihteleva Muuttumaton
Voimme muuttaa muuttuvien objektien arvoa alustuksen jälkeen. Kun muuttumaton objekti on aloitettu; Emme voi muuttaa sen arvoja.
Tilaa voidaan muuttaa. Valtiota ei voi muuttaa.
Muuttuvissa objekteissa ei muodostu uusia objekteja. Muuttumattomissa objekteissa uusi objekti muodostuu, kun kohteen arvoa muutetaan.
Se tarjoaa menetelmiä objektin muuttamiseen. Se ei tarjoa mitään tapaa muuttaa objektin arvoa.
Se tukee get()- ja set()-menetelmiä dela-objektin kanssa. Se tukee vain get()-menetelmää objektin arvon välittämiseen.
Muuttuvat luokat voivat olla säikeen turvallisia tai eivät. Muuttumattomat luokat ovat lankaturvallisia.
Olennaista muuttuvan luokan luomiseksi ovat menetelmät kenttien, getterien ja asettajien muokkaamiseen. Olennaista muuttumattoman luokan luomiseksi ovat lopullinen luokka, yksityiset kentät, lopulliset muuttuvat objektit.

Miksi Javan merkkijonot ovat muuttumattomia

Javan merkkijono on hyvin erikoinen luokka, koska sitä käytetään melkein kaikissa Java-ohjelmissa. Siksi se on muuttumaton suorituskyvyn ja turvallisuuden parantamiseksi. Ymmärretään se yksityiskohtaisesti:

Javassa merkkijonot käyttävät literaalien käsitettä. Oletetaan, että meillä on objekti, jolla on useita viitemuuttujia. Tällaisessa skenaariossa, jos muutamme viitemuuttujan arvoa, se vaikuttaa koko objektiin ja kaikkiin sen arvoihin.

java-koodiesimerkkejä

Edellä mainittujen syiden lisäksi seuraavat syyt ovat vastuussa siitä, että merkkijono on muuttumaton:

Muuttumattomat esineet ovat hyvin yksinkertaisia; synkronointia ei tarvita ja ne ovat luonnostaan ​​säikeen turvallisia. Muuttumattomat esineet ovat kuitenkin hyviä rakennuspalikoita muille esineille, joten meidän on huolehdittava niistä erityistä huolta.

Useimmat kehittäjät tekevät merkkijonosta lopullisen objektin, jotta sitä ei voida muuttaa myöhemmin.

Johtopäätös

Olemme keskustelleet Javassa muuttuvista ja muuttumattomista objekteista, nyt meillä on selkeä käsitys sekä muuttuvista että muuttumattomista objekteista ja luokista. Lisäksi olemme nähneet kuinka luodaan muuttuva ja muuttumaton luokka.

On huomattava, että muuttumattomat objektit voidaan muuttaa arvoonsa ja tilaansa, kun ne on aloitettu, ja ne voivat olla tai eivät ole säikeen turvallisia. Vertailun vuoksi muuttumattomia objekteja ei voida muuttaa niiden tilaan ja arvoon ja oletussäikeen turvallisiksi.