Aký je rozdiel medzi Mutable a Immutable v Jave?



Tento článok o Mutable and Immutable in Java je komplexným sprievodcom rozdielmi medzi nimi a tiež pojednáva o tom, prečo sú java reťazce nemenné.

Java je jedným z najpopulárnejších poskytuje rôzne koncepty pre vytváranie aplikácií a jedným z takýchto konceptov je Mutable And Immutable v Jave. Tento koncept sa spolieha na vykonávanie zmien v poliach po vytvorení objektu, a tým uľahčuje programovanie . Takže v tomto článku o premenlivých a nemenných v Jave budem diskutovať o nasledujúcich témach:

Čo je premenlivý objekt?





Objekty, v ktorých môžete po vytvorení objektu zmeniť polia a stavy, sa nazývajú premenlivé objekty. Príklad : java.util.Date, StringBuilder atď.

Čo je to Nemenný objekt?



ako nastaviť cestu java

The predmety v ktorých po vytvorení objektu nemôžete nič zmeniť, sa nazývajú Nezmeniteľné objekty. Príklad : Primitívne objekty v krabici ako Integer, Long atď.

Takže teraz, keď viete, čo je v Jave premenlivé a nemenné, poďme ďalej a pozrime sa na rozdiely medzi týmito dvoma.

Rozdiel medzi premenlivými a nezmeniteľnými objektmi



V nasledujúcej tabuľke nájdete rozdiely medzi premenlivými a nemennými objektmi v prostredí Java.

Premenlivé Nezmeniteľné
Polia je možné meniť po vytvorení objektuPo vytvorení objektu nie je možné polia meniť
Spravidla poskytuje metódu na úpravu hodnoty poľaNemá žiadny spôsob úpravy hodnoty poľa
Má metódy Getter a SetterMá iba metódu Getter
Príklad: StringBuilder, java.util.DatePríklad: Reťazec, primitívne objekty v krabici ako celé číslo, dlhé atď

Teraz, keď poznáte rozdiely medzi premenlivými a nemennými objektmi, sa pozrime na to, ako ich vytvoriť triedy.

java previesť binárne na desatinné

Ako vytvoriť premenlivú triedu?

Ak chcete vytvoriť premenlivú triedu v prostredí Java, musíte sa ubezpečiť, že sú splnené nasledujúce požiadavky:

  1. Poskytnite metódu upraviť hodnoty poľa
  2. Metóda Getter a Setter

Zvážte nasledujúci kód:

balíček edureka príklad verejnej triedy {private String coursename example (String coursename) {this.coursename = coursename} public String getName () {return coursename} public void setName (String coursename) {this.coursename = coursename} public static void main (String [] args) {example obj = new example ('Machine Learning') System.out.println (obj.getName ()) // aktualizovať názov, tento objekt je premenlivý systém obj.setName ('Machine Learning Masters'). out.println (obj.getName ())}}

Uvidíte nasledujúci výstup:

Výstup premenlivého objektu - premenlivý a nemenný v prostredí Java-Edureka

Takže keď už viete, ako vytvoriť premenlivú triedu, v ďalšom článku sa pozrime na to, ako vytvoriť nemennú triedu.

Ako vytvoriť nezmeniteľnú triedu?

Ak chcete vytvoriť nemennú triedu v prostredí Java, musíte sa ubezpečiť, že sú splnené nasledujúce požiadavky:

  1. Trieda by mala byť deklarovaná ako Konečný aby sa nedal predĺžiť.
  2. Všetky polia by mali byť súkromné, aby nebol povolený priamy prístup
  3. Žiadne metódy nastavenia
  4. Urobte všetky premenlivé polia konečné, aby ich bolo možné priradiť iba raz.
balíček edureka public class exampleimmutable {private final String coursename exampleimmutable (final String coursename) {this.coursename = coursename} verejné finále String getName () {return coursename} public static void main (String [] args) {example obj = nový príklad ( „Machine Learning“) System.out.println (obj.getName ())}}

Uvidíte nasledujúci výstup:

Dobre, takže keď teraz viete o premenlivých a nemenných objektoch, poviem vám, že reťazce sú v Jave nemenné. Som si istý, že to mohlo položiť otázku, prečo sú reťazce v Jave nemenné. Ďalej sa teda v tomto článku pozrime na to isté.

java čo robí append

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

Java používa pojmy . Ak teda uvažujete o príklade, kde máte veľa referenčných premenných odkazujúcich na jeden objekt, potom aj keby jedna referenčná premenná zmenila hodnotu objekt , automaticky budú ovplyvnené všetky ostatné referenčné premenné. Tiež podľa Efektívna Java ,kapitola 4, strana 73, 2. vydanie, sú nasledujúce dôvody prečo používať Immutable triedy:

  • Nezmeniteľné objekty sú jednoduché
  • Tieto objekty nevyžadujú žiadnu synchronizáciu a sú zo svojej podstaty bezpečné pre vlákna
  • Nezmeniteľné objekty sú dobrým stavebným prvkom pre ďalšie objekty

Ak ti mám vysvetliť na príklade, potom,

Povedzme, že máte premennú samplestring , v ktorom je uložený reťazec „ Strojové učenie „. Teraz, ak spojíte tento reťazec s iným reťazcom Majstri ', potom objekt vytvorený pre „ Strojové učenie ”Sa nezmení. Namiesto toho sa vytvorí nový objekt pre „ Majstri strojového učenia „. Pozrite si nasledujúci obrázok:

Ako vidíte na obrázku vyššie, samplestring referenčná premenná odkazuje na „strojové učenie“, ale nie na druhý reťazec, a to ani po vytvorení dvoch objektov. Týmto sa dostávame ku koncu tohto článku o Mutable and Immutable v Jave. Dúfam, že máte jasno vo všetkých aspektoch, o ktorých som hovoril vyššie.

Teraz, keď ste porozumeli základom Java, sa pozrite na autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je určený pre študentov a profesionálov, ktorí chcú byť vývojármi Java. Kurz je navrhnutý tak, aby vám dal náskok v programovaní v Jave a naučil vás základné aj pokročilé koncepty Javy spolu s rôznymi rámcami Java, ako je Hibernate & Spring.

Máte na nás otázku? Uveďte to, prosím, v sekcii komentárov v tomto blogu „Mutable and Immutable in Java“ a my sa vám ozveme čo najskôr.