logo

Mutabil și imuabil în Java

Java este un limbaj de programare orientat pe obiecte. Deoarece este un limbaj de programare orientat pe obiecte, toate metodele și mecanismele se învârt în jurul obiectelor. Un concept bazat pe obiect este mutabil și imuabil în Java . Obiectele din Java sunt fie mutabile, fie imuabile; depinde de modul în care obiectul poate fi iterat.

În această secțiune, vom discuta despre obiectele mutabile și imuabile în Java. Mai departe, vom vedea diferența dintre ele.

Ce sunt obiectele mutabile

Obiectele mutabile sunt obiecte a căror valoare poate fi schimbată după inițializare. Putem schimba valorile obiectului, cum ar fi câmpul și stările, după ce obiectul este creat. De exemplu, java.util.Date , StringBuilder , StringBuffer , etc.

Când am făcut o schimbare în obiectele mutabile existente, nu va fi creat niciun obiect nou; în schimb, va modifica valoarea obiectului existent. Clasele acestor obiecte oferă metode pentru a face modificări în el.

Getters și Setters (metodele get() și set()) sunt disponibile în obiecte mutabile. Obiectul Mutable poate fi sau nu sigur pentru fire.

cum să dezactivezi modul dezvoltator

Ce sunt obiectele imuabile

Obiectele imuabile sunt obiecte a căror valoare nu poate fi modificată după inițializare. Nu putem schimba nimic odată ce obiectul este creat. De exemplu, obiecte primitive cum ar fi int, lung , pluti , dubla , toate clasele moștenite, Clasa Wrapper , Clasa de șiruri , etc.

Pe scurt, imuabil înseamnă nemodificat sau neschimbabil. Odată ce obiectele imuabile sunt create, valorile și starea obiectului acestuia nu pot fi modificate.

Numai Getters (metoda get()) sunt disponibile, nu Setters (metoda set()) pentru obiectele imuabile.

converti din șir în întreg java

Să vedem cum să creăm clase pentru obiecte mutabile și imuabile.

Cum se creează o clasă mutabilă

Următoarele două lucruri sunt esențiale pentru a crea o clasă mutabilă:

  • Metode de modificare a valorilor câmpului
  • Getters și Setters ai obiectelor

Luați în considerare exemplul de mai jos al clasei mutabile:

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

Ieșire:

 JavaTpoint Java Training 

Din exemplul de mai sus, schimbăm valoarea numelui folosind metoda setName.

Cum se creează o clasă imuabilă

Următoarele lucruri sunt esențiale pentru a crea o clasă imuabilă:

  • Clasa finală, care este declarată finală pentru a nu putea fi prelungită.
  • Toate câmpurile ar trebui să fie private, astfel încât accesul direct la câmpuri să fie blocat.
  • Fără Setters
  • Toate câmpurile modificabile ar trebui să fie la fel de finale, astfel încât să nu poată fi repetate odată inițializate.

Luați în considerare exemplul de mai jos:

salvarea gimp ca jpeg
 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()); } } 

Ieșire:

 Core Java Training 

Prin urmare, am discutat despre obiectele și clasele mutabile și imuabile. Să discutăm despre diferențele dintre ele:

Diferența dintre obiectele mutabile și imuabile

Următoarele sunt câteva diferențe cheie între obiectele mutabile și imuabile în Java :

  • Obiectele mutabile pot fi modificate în orice valoare sau stare fără a adăuga un nou obiect. Întrucât, obiectele imuabile nu pot fi modificate la valoarea sau starea sa odată ce sunt create. In cazul obiectelor imuabile, ori de cate ori schimbam starea obiectului, va fi creat un nou obiect.
  • Obiectele mutabile oferă o metodă de modificare a conținutului obiectului. Comparativ, obiectele imuabile nu oferă nicio metodă de modificare a valorilor.
  • Obiectele mutabile sprijină setterii și getters-ul atât. Comparativ, obiectele imuabile acceptă doar setteri, nu getters.
  • Obiectele care pot fi modificate sunt sigure pentru fire sau nu, dar obiectele imuabile sunt sigure pentru fire în mod implicit.
  • Exemplele de clasă mutabilă sunt StringBuffer, Java.util.Date, StringBuilder etc. În timp ce obiectele imuabile sunt clasele moștenite, clasele wrapper, clasa String etc.

Luați în considerare tabelul de mai jos:

Mutabil Imuabil
Putem schimba valoarea obiectelor mutabile după inițializare. Odată ce un obiect imuabil este inițiat; Nu îi putem schimba valorile.
Starea poate fi schimbată. Starea nu poate fi schimbată.
În obiectele mutabile, nu se formează obiecte noi. În obiectele imuabile, un nou obiect se formează atunci când valoarea obiectului este modificată.
Oferă metode de schimbare a obiectului. Nu oferă nicio metodă de modificare a valorii obiectului.
Acceptă metodele get() și set() pentru a dela cu obiectul. Acceptă doar metoda get() pentru a transmite valoarea obiectului.
Clasele modificabile pot fi sau nu sigure pentru fire. Clasele imuabile sunt sigure pentru fire.
Elementele esențiale pentru crearea unei clase mutabile sunt metodele de modificare a câmpurilor, getters și setters. Esențiale pentru crearea unei clase imuabile sunt clasa finală, câmpurile private, obiectele mutabile finale.

De ce sunt șirurile în Java imuabile

String în Java este o clasă foarte specială, deoarece este folosit aproape în fiecare program Java. De aceea este imuabil pentru a îmbunătăți performanța și securitatea. Să înțelegem în detaliu:

În Java, șirurile folosesc conceptul de literale. Să presupunem că avem un obiect care are multe variabile de referință. Într-un astfel de scenariu, dacă vom modifica valoarea unei variabile de referință, aceasta va afecta întregul obiect și toate valorile acestuia.

În afară de motivele de mai sus, următoarele motive sunt, de asemenea, responsabile pentru a face șirul imuabil:

Obiectele imuabile sunt foarte simple; nu este nevoie de sincronizare și sunt în mod inerent sigure pentru fire. Însă, obiectele imuabile reprezintă elemente de bază bune pentru alte obiecte, așa că trebuie să le oferim o îngrijire specială.

Majoritatea dezvoltatorilor fac din String obiectul final, astfel încât să nu poată fi modificat ulterior.

șir în char java

Concluzie

Am discutat despre obiectele mutabile și imuabile în Java, acum avem o înțelegere clară a obiectelor și claselor atât mutabile, cât și imuabile. În plus, am văzut cum să creăm o clasă mutabilă și imuabilă.

Se remarcă faptul că obiectele imuabile pot fi modificate la valoarea și starea lor odată inițiate și pot fi sau nu sigure pentru fire. Comparativ, obiectele imuabile nu pot fi modificate la starea și valoarea lor și implicit în siguranță pentru fire.