Datenübertragung in Java
Wie Informationen in Java übertragen werden
Aus dem vorherigen Kurs ist bekannt, dass es zwei Arten von Speicher gibt – Stack und Heap. Im Folgenden wird erläutert, wie Daten in diesen beiden Speicherbereichen abgelegt werden:
Main.java
123456789package com.example; public class Main { public static void main(String[] args) { String number = new String("170"); String word = new String("word"); int poolNumber = -4; } }
Es wurden 3 verschiedene Variablen erstellt. Nachfolgend befindet sich ein Diagramm, das veranschaulicht, wie und wo sie im Speicher abgelegt werden:
Gehen wir durch, was im Diagramm zu sehen ist:
- Wir sehen
String-Felder im Stack-Speicher, die Verweise auf Werte im Heap-Speicher sind. Dadurch greifen wir nicht jedes Mal direkt auf den Heap-Speicher zu. Stattdessen greifen wir zunächst auf den Verweis im Stack-Speicher zu, was schneller ist als der Zugriff auf den Heap-Speicher. Sie sind bereits auf Verweise auf Werte gestoßen, als Sie das Thema String Pool behandelt haben; - Sie sehen, dass
intnicht im Heap-Speicher gespeichert wird; sein Wert wird direkt im Stack-Speicher abgelegt. Dies gilt für alle primitiven Datentypen (byte,short,int,long,float,doubleundboolean). Daher werden primitive Datentypen in Java per Wert übergeben.Stringist jedoch kein primitiver Datentyp, daher wird sein Wert im Heap-Speicher gespeichert; - Für jeden neuen Verweis wird im Heap-Speicher ein neues Objekt erstellt. Haben jedoch zwei Variablen desselben Typs denselben Wert, verweisen sie auf dasselbe Objekt im Heap-Speicher;
- Der Integer Pool ist ein Bereich im Stack-Speicher, in dem alle Integer-Werte im Bereich von
-128bis127verknüpft sind. Diese Optimierung dient der Leistungssteigerung bei der Verarbeitung von Zahlen in Java, da Zahlen in diesem Bereich häufig verwendet werden. Beachten Sie, dass der Stack-Speicher schneller arbeitet als der Heap-Speicher, sodass wir dank des Integer Pools schnellere Antworten erhalten; - Der String Pool ist ein Bereich im Heap-Speicher, in dem identische String-Werte gespeichert werden.
Fazit
In Java wird alles per Wert übergeben. Bei Objekten wird eine Kopie des Verweises übergeben, aber das eigentliche Objekt im Heap bleibt unverändert (sofern es unveränderlich ist, wie String).
Variablen im Stack speichern Verweise auf Objekte, die sich im Heap befinden. Dies gilt für alle Referenztypen, einschließlich String.
1. Was ist ein Integer Pool in Java?
2. Wie werden Daten in Java übergeben, per Referenz oder per Wert?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain more about the difference between stack and heap memory?
What is the String Pool and how does it work in Java?
Can you give an example of how passing by value works with objects in Java?
Awesome!
Completion rate improved to 2.63
Datenübertragung in Java
Swipe um das Menü anzuzeigen
Wie Informationen in Java übertragen werden
Aus dem vorherigen Kurs ist bekannt, dass es zwei Arten von Speicher gibt – Stack und Heap. Im Folgenden wird erläutert, wie Daten in diesen beiden Speicherbereichen abgelegt werden:
Main.java
123456789package com.example; public class Main { public static void main(String[] args) { String number = new String("170"); String word = new String("word"); int poolNumber = -4; } }
Es wurden 3 verschiedene Variablen erstellt. Nachfolgend befindet sich ein Diagramm, das veranschaulicht, wie und wo sie im Speicher abgelegt werden:
Gehen wir durch, was im Diagramm zu sehen ist:
- Wir sehen
String-Felder im Stack-Speicher, die Verweise auf Werte im Heap-Speicher sind. Dadurch greifen wir nicht jedes Mal direkt auf den Heap-Speicher zu. Stattdessen greifen wir zunächst auf den Verweis im Stack-Speicher zu, was schneller ist als der Zugriff auf den Heap-Speicher. Sie sind bereits auf Verweise auf Werte gestoßen, als Sie das Thema String Pool behandelt haben; - Sie sehen, dass
intnicht im Heap-Speicher gespeichert wird; sein Wert wird direkt im Stack-Speicher abgelegt. Dies gilt für alle primitiven Datentypen (byte,short,int,long,float,doubleundboolean). Daher werden primitive Datentypen in Java per Wert übergeben.Stringist jedoch kein primitiver Datentyp, daher wird sein Wert im Heap-Speicher gespeichert; - Für jeden neuen Verweis wird im Heap-Speicher ein neues Objekt erstellt. Haben jedoch zwei Variablen desselben Typs denselben Wert, verweisen sie auf dasselbe Objekt im Heap-Speicher;
- Der Integer Pool ist ein Bereich im Stack-Speicher, in dem alle Integer-Werte im Bereich von
-128bis127verknüpft sind. Diese Optimierung dient der Leistungssteigerung bei der Verarbeitung von Zahlen in Java, da Zahlen in diesem Bereich häufig verwendet werden. Beachten Sie, dass der Stack-Speicher schneller arbeitet als der Heap-Speicher, sodass wir dank des Integer Pools schnellere Antworten erhalten; - Der String Pool ist ein Bereich im Heap-Speicher, in dem identische String-Werte gespeichert werden.
Fazit
In Java wird alles per Wert übergeben. Bei Objekten wird eine Kopie des Verweises übergeben, aber das eigentliche Objekt im Heap bleibt unverändert (sofern es unveränderlich ist, wie String).
Variablen im Stack speichern Verweise auf Objekte, die sich im Heap befinden. Dies gilt für alle Referenztypen, einschließlich String.
1. Was ist ein Integer Pool in Java?
2. Wie werden Daten in Java übergeben, per Referenz oder per Wert?
Danke für Ihr Feedback!