Heim  >  Artikel  >  Java  >  Vergleichende Analyse veränderlicher Objekte und unveränderlicher Objekte in Java

Vergleichende Analyse veränderlicher Objekte und unveränderlicher Objekte in Java

巴扎黑
巴扎黑Original
2017-07-20 13:18:142132Durchsuche

1. Was ist ein veränderliches Objekt?

Objekte, die beim Ändern ihrer Attribute keine neuen Objekte erstellen, wie z. B. StringBuiler, können die darin gespeicherten Zeichenfolgen als Attribute betrachten, wenn sie StringBuilder.append(String str) zum Anhängen aufrufen Es handelt sich um eine Zeichenfolge. Dies erfolgt basierend auf dem vorhandenen StringBuilder-Objekt und es wird kein neues Objekt erstellt.

Wrapper-Klassen grundlegender Datentypen und Objekte fast aller Klassen außer der String-Klasse sind veränderbare Objekte.

2. Was ist ein unveränderliches Objekt?

Wenn die Eigenschaften geändert werden, muss ein neues Objekt erstellt werden, z. B. String. Wenn bereits „String str=‘abc‘“ vorhanden ist, weisen Sie „str=‘efg‘“ zu. erneut und erstellen Sie einen neuen String. Das Objekt speichert „efg“ und str zeigt auf dieses neu erstellte Objekt.

Wrapper-Klassen grundlegender Datentypen und Objekte der String-Klasse sind unveränderliche Objekte.

3. Auswahl veränderlicher und unveränderlicher Objekte

Unveränderliche Objekte stellen einen stabilen Bereich im Speicher und mehrere Referenzvariablen dar, die auf denselben Bereich verweisen. Wenn eine Referenzvariable versucht, den Inhalt des Objekts zu ändern, ändert sie nicht den Inhalt des ursprünglichen Objekts, sondern erstellt ein neues Objekt. Daher werden in Situationen, in denen Daten erforderlich sind, normalerweise unveränderliche Objekte verwendet stabil gehalten werden.

Beim Aktualisieren der Attribute eines variablen Objekts wird kein neues Objekt erstellt, um Speicherplatz zu sparen. Daher werden variable Objekte hauptsächlich in Situationen verwendet, in denen sich Attribute häufig ändern, z. B. bei Zählern. Es ist notwendig, statistische Objekte zu erstellen und die Zuordnungsbeziehung zwischen statistischen Ergebnissen wird daher als Kartensammlung erstellt. Integer-Objekte sind unveränderliche Objekte und eignen sich nicht zum Speichern statistischer Ergebnisse. Natürlich kann es sich auch um ein benutzerdefiniertes Objekt zum Zählen handeln :

    public void test01() {
        String str = "abc efe hig klm nop qrs";
        String[] arr = str.split(" ");

        HashMap<String, int[]> map = new HashMap<String, int[]>();for (String x : arr) {int[] count = map.get(x);if (count != null)
                count[0]++;elsemap.put(x, new int[] { 1 });
        }
    }

Unveränderliche Objekte haben mehrere Vorteile:
1. Die Speicherzuweisung ist fest und muss nicht erweitert werden
2 kann nach Belieben mehrere Kopien kopieren, unterschiedliche Es besteht keine Notwendigkeit, zwischen Threads zu sperren oder zu entsperren
Dies ist die Funktion „Variable unverändert“ in der funktionalen Programmierung. Natürlich gibt es noch andere Vorteile, die durch funktionale Programmierung befürwortet werden, wie z. B. Klarheit des Codes usw., aber das ist Ansichtssache.

Das obige ist der detaillierte Inhalt vonVergleichende Analyse veränderlicher Objekte und unveränderlicher Objekte in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn