logo

Meniteľné a nemenné v Jave

Java je objektovo orientovaný programovací jazyk. Keďže ide o objektovo orientovaný programovací jazyk, všetky metódy a mechanizmus sa točia okolo objektov. Jeden objektový koncept je premenlivý a nemenné v Jave . Objekty v Jave sú buď meniteľné alebo nemenné; záleží na tom, ako sa dá objekt iterovať.

V tejto časti budeme diskutovať o meniteľných a nemenných objektoch v Jave. Ďalej uvidíme rozdiel medzi nimi.

Čo sú premenlivé objekty

Meniteľné objekty sú objekty, ktorých hodnotu je možné po inicializácii zmeniť. Po vytvorení objektu môžeme zmeniť hodnoty objektu, napríklad pole a stavy. Napríklad, java.util.Date , StringBuilder , StringBuffer , atď.

Keď vykonáme zmenu v existujúcich meniteľných objektoch, nevytvorí sa žiadny nový objekt; namiesto toho zmení hodnotu existujúceho objektu. Tieto triedy objektu poskytujú metódy na vykonanie zmien v nich.

Getters a Setters ( metódy get() a set() ) sú dostupné v meniteľných objektoch. Premenlivý objekt môže alebo nemusí byť bezpečný pre vlákna.

odstráňte vyrovnávaciu pamäť npm

Čo sú nemenné objekty

Nemenné objekty sú objekty, ktorých hodnotu nie je možné po inicializácii zmeniť. Po vytvorení objektu už nemôžeme nič zmeniť. Napríklad, primitívne predmety ako napríklad int, dlhý , plavák , dvojitý , všetky staršie triedy, Trieda obalov , Strunová trieda , atď.

Stručne povedané, nemenný znamená neupravený alebo nemenný. Akonáhle sú nemenné objekty vytvorené, ich hodnoty objektu a stav nemožno zmeniť.

Pre nemenné objekty sú dostupné iba getry (metóda get()), nie Settery (metóda set()).

Pozrime sa, ako vytvoriť triedy pre meniteľné a nemenné objekty.

Ako vytvoriť meniteľnú triedu

Nasledujúce dve veci sú nevyhnutné na vytvorenie meniteľnej triedy:

  • Metódy na úpravu hodnôt polí
  • Getters a Setters objektov

Zvážte nižšie uvedený príklad meniteľnej triedy:

java prepínač
 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()); } } 

Výkon:

 JavaTpoint Java Training 

Z vyššie uvedeného príkladu meníme hodnotu názvu pomocou metódy setName.

Ako vytvoriť nemennú triedu

Nasledujúce veci sú nevyhnutné na vytvorenie nemennej triedy:

  • Záverečná trieda, ktorá je vyhlásená za konečnú, takže ju nemožno predĺžiť.
  • Všetky polia by mali byť súkromné, aby bol zablokovaný priamy prístup k poliam.
  • Žiadni setri
  • Všetky meniteľné polia by mali byť konečné, aby ich nebolo možné po inicializácii opakovať.

Zvážte nasledujúci príklad:

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

Výkon:

 Core Java Training 

Preto sme diskutovali o meniteľných a nemenných objektoch a triedach. Poďme diskutovať o rozdieloch medzi nimi:

Rozdiel medzi premenlivými a nemennými objektmi

Nasledujú niektoré kľúčové rozdiely medzi meniteľnými a nemennými objektmi Java :

strsep
  • Meniteľné objekty je možné zmeniť na akúkoľvek hodnotu alebo stav bez pridania nového objektu. Zatiaľ čo nemenné objekty nemôžu byť zmenené na ich hodnotu alebo stav, keď sú vytvorené. V prípade nemenných objektov vždy, keď zmeníme stav objektu, vytvorí sa nový objekt.
  • Meniteľné objekty poskytujú metódu na zmenu obsahu objektu. V porovnaní s tým nemenné objekty neposkytujú žiadnu metódu na zmenu hodnôt.
  • Meniteľné objekty podporujú nastavovačov aj získavateľov. V porovnaní s tým nemenné objekty podporujú iba nastavovače, nie getry.
  • Meniteľné objekty môžu alebo nemusia byť bezpečné pre vlákna, ale nemenné objekty sú štandardne bezpečné pre vlákna.
  • Príklady meniteľných tried sú StringBuffer, Java.util.Date, StringBuilder atď. Zatiaľ čo nemenné objekty sú staršie triedy, obalové triedy, trieda String atď.

Zvážte nasledujúcu tabuľku:

Premenlivé Nemenné
Po inicializácii môžeme zmeniť hodnotu meniteľných objektov. Akonáhle je inicializovaný nemenný objekt; Nemôžeme zmeniť jeho hodnoty.
Stav sa dá zmeniť. Stav sa nedá zmeniť.
V meniteľných objektoch sa nevytvárajú žiadne nové objekty. V nemenných objektoch sa nový objekt vytvorí, keď sa zmení hodnota objektu.
Poskytuje metódy na zmenu objektu. Neposkytuje žiadnu metódu na zmenu hodnoty objektu.
Podporuje metódy get() a set() na dela s objektom. Podporuje iba metódu get() na odovzdanie hodnoty objektu.
Meniteľné triedy môžu alebo nemusia byť bezpečné pre vlákna. Nemenné triedy sú bezpečné pre vlákna.
Základom pre vytvorenie meniteľnej triedy sú metódy na úpravu polí, getterov a nastavovačov. Základom pre vytvorenie nemennej triedy sú finálna trieda, súkromné ​​polia, finálne meniteľné objekty.

Prečo sú reťazce v jazyku Java nemenné

String v jazyku Java je veľmi špeciálna trieda, pretože sa používa takmer v každom programe Java. Preto je Immutable na zvýšenie výkonu a bezpečnosti. Poďme to pochopiť podrobne:

V jazyku Java používajú reťazce koncept literálov. Predpokladajme, že máme objekt s mnohými referenčnými premennými. V takomto scenári, ak zmeníme hodnotu referenčnej premennej, ovplyvní to celý objekt a všetky jeho hodnoty.

protokoly vrstvy dátového spojenia

Okrem vyššie uvedených dôvodov sú za to, že reťazec je nemenný, zodpovedné aj tieto dôvody:

Nemenné objekty sú veľmi jednoduché; nie je potrebná synchronizácia a sú vo svojej podstate bezpečné pre vlákna. Ale nemenné objekty tvoria dobré stavebné kamene pre iné objekty, takže im musíme venovať špeciálnu starostlivosť.

Väčšina vývojárov robí z reťazca konečný objekt, takže ho nemožno neskôr zmeniť.

Záver

Diskutovali sme o meniteľných a nemenných objektoch v Jave, teraz máme jasnú predstavu o meniteľných aj nemenných objektoch a triedach. Ďalej sme videli, ako vytvoriť meniteľnú a nemennú triedu.

Je potrebné poznamenať, že nemenné objekty môžu byť zmenené na ich hodnotu a stav po spustení a môžu alebo nemusia byť bezpečné pre vlákna. V porovnaní s tým nemenné objekty nemôžu byť zmenené na ich stav a hodnotu a predvolené vlákno je bezpečné.