logo

Proměnlivé a neměnné v Javě

Java je objektově orientovaný programovací jazyk. Jelikož se jedná o objektově orientovaný programovací jazyk, všechny metody a mechanismus se točí kolem objektů. Jeden objektový koncept je proměnlivý a neměnný v Javě . Objekty v Javě jsou buď proměnlivé, nebo neměnné; záleží na tom, jak lze objekt iterovat.

V této části probereme proměnlivé a neměnné objekty v Javě. Dále uvidíme rozdíl mezi nimi.

Co jsou proměnlivé objekty

Proměnlivé objekty jsou objekty, jejichž hodnotu lze po inicializaci změnit. Po vytvoření objektu můžeme změnit hodnoty objektu, jako je pole a stavy. Například, java.util.Date , StringBuilder , StringBuffer , atd.

Když provedeme změnu v existujících měnitelných objektech, nebude vytvořen žádný nový objekt; místo toho změní hodnotu existujícího objektu. Tyto třídy objektu poskytují metody, jak v něm provádět změny.

Getters a Setters ( metody get() a set() ) jsou dostupné v měnitelných objektech. Objekt Mutable může nebo nemusí být bezpečný pro vlákna.

vypnutí vývojářského režimu androidu

Co jsou neměnné objekty

Neměnné objekty jsou objekty, jejichž hodnotu nelze po inicializaci změnit. Jakmile je objekt vytvořen, nemůžeme nic změnit. Například, primitivní předměty jako například int, dlouho , plovák , dvojnásobek , všechny starší třídy, Třída obalovačky , Řetězcová třída , atd.

Stručně řečeno, neměnný znamená neupravený nebo neměnný. Jakmile jsou neměnné objekty vytvořeny, jejich hodnoty objektů a stav nelze změnit.

Pro neměnné objekty jsou k dispozici pouze Getters ( metoda get() ), nikoli Setters ( metoda set () ).

náhodně ne v Javě

Podívejme se, jak vytvořit třídy pro proměnlivé a neměnné objekty.

Jak vytvořit proměnlivou třídu

Následující dvě věci jsou nezbytné pro vytvoření proměnlivé třídy:

  • Metody pro úpravu hodnot polí
  • Gettery a Settery objektů

Zvažte níže uvedený příklad proměnlivé třídy:

 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ýstup:

 JavaTpoint Java Training 

Z výše uvedeného příkladu měníme hodnotu názvu pomocí metody setName.

Jak vytvořit neměnnou třídu

Pro vytvoření neměnné třídy jsou nezbytné následující věci:

  • Závěrečná třída, která je prohlášena za konečnou, takže ji nelze prodloužit.
  • Všechna pole by měla být soukromá, aby byl blokován přímý přístup k polím.
  • Žádní seři
  • Všechna měnitelná pole by měla být konečná, aby je nebylo možné po inicializaci opakovat.

Zvažte níže uvedený příklad:

konverze nfa na dfa
 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ýstup:

 Core Java Training 

Proto jsme diskutovali o proměnných a neměnných objektech a třídách. Pojďme diskutovat o rozdílech mezi nimi:

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

Níže jsou uvedeny některé klíčové rozdíly mezi proměnlivými a neměnnými objekty Jáva :

  • Proměnlivé objekty lze změnit na libovolnou hodnotu nebo stav bez přidání nového objektu. Zatímco neměnné objekty nelze změnit na jejich hodnotu nebo stav, jakmile jsou vytvořeny. V případě neměnných objektů, kdykoli změníme stav objektu, vytvoří se nový objekt.
  • Proměnlivé objekty poskytují metodu pro změnu obsahu objektu. Ve srovnání s tím neměnné objekty neposkytují žádnou metodu pro změnu hodnot.
  • Proměnlivé objekty podporují jak settery, tak getry. Ve srovnání s tím neměnné objekty podporují pouze settery, nikoli getry.
  • Proměnlivé objekty mohou nebo nemusí být bezpečné pro vlákna, ale neměnné objekty jsou ve výchozím nastavení bezpečné pro vlákna.
  • Příklady proměnitelných tříd jsou StringBuffer, Java.util.Date, StringBuilder atd. Zatímco neměnné objekty jsou starší třídy, obalové třídy, třída String atd.

Zvažte níže uvedenou tabulku:

Proměnlivý Neměnný
Po inicializaci můžeme změnit hodnotu proměnlivých objektů. Jakmile je inicializován neměnný objekt; Nemůžeme změnit jeho hodnoty.
Stav lze změnit. Stav nelze změnit.
V proměnlivých objektech se nevytvářejí žádné nové objekty. V neměnných objektech se nový objekt vytvoří, když se změní hodnota objektu.
Poskytuje metody pro změnu objektu. Neposkytuje žádnou metodu pro změnu hodnoty objektu.
Podporuje metody get() a set() pro dela s objektem. Podporuje pouze metodu get() pro předání hodnoty objektu.
Proměnlivé třídy mohou nebo nemusí být bezpečné pro vlákna. Neměnné třídy jsou bezpečné pro vlákna.
Základem pro vytvoření proměnlivé třídy jsou metody pro úpravu polí, getterů a setterů. Základy pro vytvoření neměnné třídy jsou finální třída, soukromá pole, finální měnitelné objekty.

Proč jsou řetězce v Javě neměnné

String v Javě je velmi speciální třída, protože se používá téměř v každém Java programu. To je důvod, proč je Immutable pro zvýšení výkonu a zabezpečení. Pojďme to pochopit podrobně:

V Javě používají řetězce koncept literálů. Předpokládejme, že máme objekt s mnoha referenčními proměnnými. Pokud v takovém scénáři změníme hodnotu referenční proměnné, ovlivní to celý objekt a všechny jeho hodnoty.

Kromě výše uvedených důvodů jsou za to, že řetězec je neměnný, zodpovědné také následující důvody:

Neměnné objekty jsou velmi jednoduché; není potřeba synchronizace a jsou ze své podstaty bezpečné pro vlákna. Ale neměnné objekty tvoří dobré stavební kameny pro jiné objekty, takže jim musíme věnovat zvláštní péči.

Většina vývojářů dělá z řetězce konečný objekt, takže jej nelze později měnit.

c program pro dvourozměrné pole

Závěr

Probírali jsme proměnlivé a neměnné objekty v Javě, nyní máme jasnou představu o proměnných i neměnných objektech a třídách. Dále jsme viděli, jak vytvořit proměnlivou a neměnnou třídu.

Je třeba poznamenat, že neměnné objekty mohou být změněny na jejich hodnotu a stav, jakmile jsou iniciovány, a mohou nebo nemusí být bezpečné pro vlákna. Ve srovnání s neměnnými objekty nelze změnit jejich stav a hodnotu a výchozí vláknově bezpečné.