Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Datenübertragung in Java | Tiefe Java-Struktur
Java Erweitert

bookDatenü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

Main.java

copy
123456789
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; } }

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 int nicht 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, double und boolean). Daher werden primitive Datentypen in Java per Wert übergeben. String ist 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 -128 bis 127 verknü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?

question mark

Was ist ein Integer Pool in Java?

Select the correct answer

question mark

Wie werden Daten in Java übergeben, per Referenz oder per Wert?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 2.63

bookDatenü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

Main.java

copy
123456789
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; } }

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 int nicht 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, double und boolean). Daher werden primitive Datentypen in Java per Wert übergeben. String ist 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 -128 bis 127 verknü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?

question mark

Was ist ein Integer Pool in Java?

Select the correct answer

question mark

Wie werden Daten in Java übergeben, per Referenz oder per Wert?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 2
some-alt