Kursinhalt
Java Erweitert
Java Erweitert
Datenübertragung in Java
Wie werden Informationen in Java übertragen?
Sie wissen aus dem vorherigen Kurs, dass es zwei Arten von Speicher gibt - Stack und Heap. Werfen wir einen Blick darauf, wie Daten in diesen beiden Speicherbereichen gespeichert werden:
Main
package com.example; public class Main { public static void main(String[] args) { String number = new String("170"); String word = new String("word"); int poolNumber = -4; } }
Wir haben 3 verschiedene Variablen erstellt. Unten ist ein Diagramm, das veranschaulicht, wie und wo sie im Speicher gespeichert werden:
Lassen Sie uns durchgehen, was Sie im Diagramm beobachtet haben:
- Wir sehen
String
Felder im Stapelspeicher, die Links zu Werten im Heapspeicher sind. Auf diese Weise greifen wir nicht jedes Mal direkt auf den Heapspeicher zu. Stattdessen greifen wir zunächst auf den Link im Stapelspeicher zu, was schneller ist als der Zugriff auf den Heapspeicher. Sie haben bereits Links zu Werten kennengelernt, als Sie das Thema String Pool gelernt haben; - Sie können sehen, dass
int
nicht im Heapspeicher gespeichert ist; sein Wert wird direkt im Stapelspeicher gespeichert. Dies gilt für alle primitiven Datentypen (byte
,short
,int
,long
,float
,double
undboolean
). Daher werden primitive Datentypen in Java als Wert übergeben.String
ist jedoch kein primitiver Datentyp, daher wird sein Wert im Heapspeicher gespeichert; - Für jeden neuen Link wird ein neues Objekt im Heapspeicher erstellt. Wenn jedoch zwei Variablen desselben Typs denselben Wert haben, verweisen sie auf dasselbe Objekt im Heapspeicher;
- Der Integer Pool ist ein Bereich im Stapelspeicher, in dem alle Ganzzahlen im Bereich von
-128
bis127
verlinkt sind. Diese Optimierung wird durchgeführt, um die Leistung der Zahlenverarbeitung in Java zu verbessern, da Zahlen in diesem Bereich häufig verwendet werden. Denken Sie daran, dass der Stapelspeicher schneller arbeitet als der Heapspeicher, sodass wir dank des Integer Pools schnellere Antworten erhalten; - Der String Pool ist ein Bereich im Heapspeicher, in dem identische Zeichenfolgenwerte gespeichert werden.
Schlussfolgerung
Wir können schlussfolgern, dass in Java Datentypen by value übergeben werden. Objekte wie String
werden ebenfalls by value übergeben, durchlaufen jedoch eine Phase des Übergebens durch eine Referenz.
1. Was ist ein Integer Pool in Java?
2. Wie werden Daten in Java übergeben, durch Referenz oder durch Wert?
War alles klar?
Danke für Ihr Feedback!
Abschnitt 1. Kapitel 2