logo

Veränderlich und unveränderlich in Java

Java ist eine objektorientierte Programmiersprache. Da es sich um eine objektorientierte Programmiersprache handelt, drehen sich alle Methoden und Mechanismen um die Objekte. Ein objektbasiertes Konzept ist veränderbar und unveränderlich in Java . Objekte in Java sind entweder veränderlich oder unveränderlich; es hängt davon ab, wie das Objekt iteriert werden kann.

In diesem Abschnitt besprechen wir veränderliche und unveränderliche Objekte in Java. Außerdem werden wir den Unterschied zwischen ihnen sehen.

Was sind veränderliche Objekte?

Die veränderlichen Objekte sind Objekte, deren Wert nach der Initialisierung geändert werden kann. Wir können die Werte des Objekts, wie z. B. Feld und Zustände, ändern, nachdem das Objekt erstellt wurde. Zum Beispiel, java.util.Datum , StringBuilder , StringBuffer , usw.

Wenn wir eine Änderung an vorhandenen veränderlichen Objekten vornehmen, wird kein neues Objekt erstellt; Stattdessen wird der Wert des vorhandenen Objekts geändert. Die Klassen dieser Objekte stellen Methoden bereit, um Änderungen daran vorzunehmen.

Die Getter und Setter (Methoden get() und set()) sind in veränderlichen Objekten verfügbar. Das veränderliche Objekt kann threadsicher sein oder auch nicht.

Numpy-Nullen

Was sind unveränderliche Objekte?

Die unveränderlichen Objekte sind Objekte, deren Wert nach der Initialisierung nicht geändert werden kann. Sobald das Objekt erstellt wurde, können wir nichts mehr ändern. Zum Beispiel, primitive Objekte wie int , lang , schweben , doppelt , alle Legacy-Klassen, Wrapper-Klasse , String-Klasse , usw.

Kurz gesagt, unveränderlich bedeutet unverändert oder unveränderlich. Sobald die unveränderlichen Objekte erstellt wurden, können ihre Objektwerte und ihr Status nicht mehr geändert werden.

Für unveränderliche Objekte sind nur Getter (Methode get()) verfügbar, nicht Setter (Methode set()).

Hashmap Java

Sehen wir uns an, wie man Klassen für veränderliche und unveränderliche Objekte erstellt.

So erstellen Sie eine veränderbare Klasse

Die folgenden zwei Dinge sind für die Erstellung einer veränderlichen Klasse unerlässlich:

  • Methoden zum Ändern der Feldwerte
  • Getter und Setter der Objekte

Betrachten Sie das folgende Beispiel der veränderlichen Klasse:

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

Ausgabe:

 JavaTpoint Java Training 

Aus dem obigen Beispiel ändern wir den Namenswert mithilfe der setName-Methode.

So erstellen Sie eine unveränderliche Klasse

Die folgenden Dinge sind für die Erstellung einer unveränderlichen Klasse unerlässlich:

  • Letzte Klasse, die als endgültig deklariert wird, sodass sie nicht erweitert werden kann.
  • Alle Felder sollten privat sein, sodass der direkte Zugriff auf die Felder blockiert ist.
  • Keine Setter
  • Alle veränderbaren Felder sollten so final sein, dass sie nach der Initialisierung nicht mehr iteriert werden können.

Betrachten Sie das folgende Beispiel:

Versuchen Sie es mit der Datenstruktur
 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()); } } 

Ausgabe:

 Core Java Training 

Daher haben wir die veränderlichen und unveränderlichen Objekte und Klassen besprochen. Lassen Sie uns die Unterschiede zwischen ihnen besprechen:

Unterschied zwischen veränderlichen und unveränderlichen Objekten

Im Folgenden sind einige wichtige Unterschiede zwischen veränderlichen und unveränderlichen Objekten aufgeführt Java :

  • Die veränderlichen Objekte können in einen beliebigen Wert oder Zustand geändert werden, ohne dass ein neues Objekt hinzugefügt werden muss. Der Wert oder Zustand unveränderlicher Objekte hingegen kann nach der Erstellung nicht mehr geändert werden. Bei unveränderlichen Objekten wird jedes Mal, wenn wir den Zustand des Objekts ändern, ein neues Objekt erstellt.
  • Veränderbare Objekte bieten eine Methode zum Ändern des Inhalts des Objekts. Im Vergleich dazu bieten die unveränderlichen Objekte keine Möglichkeit, die Werte zu ändern.
  • Die veränderlichen Objekte unterstützen sowohl Setter als auch Getter. Im Vergleich dazu unterstützen die unveränderlichen Objekte nur Setter, keine Getter.
  • Die veränderlichen Objekte sind möglicherweise threadsicher, die unveränderlichen Objekte sind jedoch standardmäßig threadsicher.
  • Die Beispiele für veränderliche Klassen sind StringBuffer, Java.util.Date, StringBuilder usw. Während die unveränderlichen Objekte Legacy-Klassen, Wrapper-Klassen, String-Klassen usw. sind.

Betrachten Sie die folgende Tabelle:

Veränderlich Unveränderlich
Wir können den Wert veränderlicher Objekte nach der Initialisierung ändern. Sobald ein unveränderliches Objekt initiiert wird; Wir können seine Werte nicht ändern.
Der Zustand kann geändert werden. Der Zustand kann nicht geändert werden.
Bei veränderlichen Objekten entstehen keine neuen Objekte. Bei unveränderlichen Objekten entsteht ein neues Objekt, wenn sich der Wert des Objekts ändert.
Es bietet Methoden zum Ändern des Objekts. Es bietet keine Methode zum Ändern des Objektwerts.
Es unterstützt die Methoden get() und set() zum Delatieren mit dem Objekt. Es unterstützt nur die Methode get(), um den Wert des Objekts zu übergeben.
Veränderbare Klassen können threadsicher sein oder auch nicht. Unveränderliche Klassen sind threadsicher.
Das Wesentliche zum Erstellen einer veränderlichen Klasse sind Methoden zum Ändern von Feldern, Gettern und Settern. Die wesentlichen Voraussetzungen für die Erstellung einer unveränderlichen Klasse sind die endgültige Klasse, private Felder und endgültige veränderliche Objekte.

Warum sind Strings in Java unveränderlich?

String ist in Java eine ganz besondere Klasse, da sie fast in jedem Java-Programm verwendet wird. Aus diesem Grund ist es unveränderlich, um Leistung und Sicherheit zu verbessern. Lassen Sie es uns im Detail verstehen:

In Java verwenden Strings das Konzept von Literalen. Angenommen, wir haben ein Objekt mit vielen Referenzvariablen. Wenn wir in einem solchen Szenario den Wert einer Referenzvariablen ändern, wirkt sich dies auf das gesamte Objekt und alle seine Werte aus.

Abgesehen von den oben genannten Gründen sind auch die folgenden Gründe dafür verantwortlich, dass der String unveränderlich ist:

Unveränderliche Objekte sind sehr einfach; Es ist keine Synchronisierung erforderlich und sie sind von Natur aus threadsicher. Aber unveränderliche Objekte sind gute Bausteine ​​für andere Objekte, daher müssen wir ihnen besondere Sorgfalt zukommen lassen.

Die meisten Entwickler machen den String zum endgültigen Objekt, damit er später nicht geändert werden kann.

bash schlafen

Abschluss

Wir haben veränderliche und unveränderliche Objekte in Java besprochen und verfügen nun über ein klares Verständnis sowohl veränderlicher als auch unveränderlicher Objekte und Klassen. Außerdem haben wir gesehen, wie man eine veränderliche und unveränderliche Klasse erstellt.

Es wird darauf hingewiesen, dass unveränderliche Objekte nach ihrer Initiierung in ihren Wert und Zustand geändert werden können und möglicherweise threadsicher sind. Im Vergleich dazu können die unveränderlichen Objekte nicht in ihren Status und Wert geändert werden und sind standardmäßig threadsicher.