Jaký je rozdíl mezi Mutable a Immutable v Javě?



Tento článek o Mutable and Immutable in Java je komplexním průvodcem rozdíly mezi nimi a také pojednává o tom, proč jsou řetězce java neměnné.

Java je jedním z nejpopulárnějších poskytuje různé koncepty pro vytváření aplikací a jedním takovým konceptem je Mutable And Immutable v Javě. Tento koncept se spoléhá na provádění změn v polích po vytvoření objektu, a tím usnadňuje programování . V tomto článku o proměnlivých a neměnných v Javě se tedy budu zabývat následujícími tématy:

Co je to proměnlivý objekt?





Objekty, ve kterých můžete změnit pole a stavy po vytvoření objektu, se nazývají proměnlivé objekty. Příklad : java.util.Date, StringBuilder atd.

Co je to Neměnný objekt?



třídit pole c ++

The předměty ve kterém po vytvoření objektu nemůžete nic změnit, se označují jako Neměnné objekty. Příklad : Primitivní objekty v rámečku jako Integer, Long atd.

Takže teď, když víte, co je v Javě proměnlivé a neměnné, pojďme se pohnout kupředu a podívat se na rozdíly mezi těmito dvěma.

Rozdíl mezi proměnlivými a neměnnými objekty



V následující tabulce najdete rozdíly mezi proměnlivými a neměnnými objekty v Javě.

Proměnlivý Neměnný
Pole lze po vytvoření objektu změnitPo vytvoření objektu nelze pole měnit
Obecně poskytuje metodu pro úpravu hodnoty poleNemá žádnou metodu pro úpravu hodnoty pole
Má metody Getter a SetterMá pouze metodu Getter
Příklad: StringBuilder, java.util.DatePříklad: Řetězec, primitivní objekty v rámečku jako Integer, Long atd

Nyní, když znáte rozdíly mezi proměnlivými a neměnnými objekty, podívejme se, jak je vytvořit třídy.

c ++ třídicí pole

Jak vytvořit třídu Mutable?

Chcete-li vytvořit proměnlivou třídu v Javě, musíte se ujistit, že jsou splněny následující požadavky:

  1. Poskytněte metodu upravit hodnoty pole
  2. Metoda Getter a Setter

Zvažte následující kód:

balíček edureka příklad veřejné třídy {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 ()) // aktualizovat název, tento objekt je proměnlivý systém obj.setName ('Machine Learning Masters'). out.println (obj.getName ())}}

Zobrazí se následující výstup:

Výstup proměnlivého objektu - proměnlivý a neměnný v prostředí Java- Edureka

Takže teď, když víte, jak vytvořit proměnlivou třídu, se v dalším článku podívejme na to, jak vytvořit neměnnou třídu.

Jak vytvořit neměnnou třídu?

Chcete-li vytvořit neměnnou třídu v Javě, musíte se ujistit, že jsou splněny následující požadavky:

  1. Třída by měla být deklarována jako finále aby ji nebylo možné prodloužit.
  2. Všechna pole by měla být soukromá, aby nebyl povolen přímý přístup
  3. Žádné metody nastavení
  4. Udělejte všechna proměnlivá pole konečná, aby je bylo možné přiřadit pouze jednou.
balíček edureka public class exampleimmutable {private final String coursename exampleimmutable (final String coursename) {this.coursename = coursename} public final String getName () {return coursename} public static void main (String [] args) {example obj = new example ( 'Machine Learning') System.out.println (obj.getName ())}}

Uvidíte níže uvedený výstup:

Dobře, takže teď, když víte o proměnlivých a neměnných objektech, řeknu vám, že řetězce jsou v Javě neměnné. Jsem si jist, že to mohlo vyvolat otázku, proč jsou řetězce v Javě neměnné. V dalším článku se tedy podívejme na to samé.

jaký je rozdíl mezi css a css3

Proč jsou řetězce v jazyce Java neměnné?

Java používá pojmy . Pokud tedy vezmete v úvahu příklad, kde máte mnoho referenčních proměnných odkazujících na jeden objekt, pak i když jedna referenční proměnná změní hodnotu objekt , budou automaticky ovlivněny všechny ostatní referenční proměnné. Také podle Efektivní Java ,kapitola 4, strana 73, 2. vydání, jsou následující důvody, proč používat třídy Immutable:

  • Neměnné objekty jsou jednoduché
  • Tyto objekty nevyžadují žádnou synchronizaci a jsou ze své podstaty bezpečné pro vlákna
  • Nezměnitelné objekty vytvářejí dobré stavební kameny pro jiné objekty

Pokud vám musím vysvětlit příklad, pak

Řekněme, že máte proměnnou samplestring , který ukládá řetězec „ Strojové učení “. Nyní, pokud zřetězíte tento řetězec s jiným řetězcem ' Mistři ', pak objekt vytvořený pro „ Strojové učení “Se nezmění. Místo toho bude vytvořen nový objekt pro „ Mistři strojového učení “. Viz následující obrázek:

Jak vidíte na obrázku výše, samplestring reference variable odkazuje na „Machine Learning“, ale ne na jiný řetězec, a to ani po vytvoření dvou objektů. Tímto ukončujeme tento článek o Mutable and Immutable v Javě. Doufám, že máte jasno v každém aspektu, o kterém jsem hovořil výše.

Nyní, když jste pochopili základy Javy, podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů rozložených po celém světě. Školicí a certifikační kurz Edureka Java J2EE a SOA je určen pro studenty a profesionály, kteří chtějí být vývojářem Java. Kurz je navržen tak, aby vám poskytl náskok v programování v Javě a naučil vás základní i pokročilé koncepty Javy spolu s různými rámci Java, jako je Hibernate & Spring.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů v tomto blogu „Mutable and Immutable in Java“ a my se vám ozveme co nejdříve.