Referenzen

O2016

Bekanntes Mitglied
Leider kann ich es hier nicht zeichnen:
Referenzen verstehen:
Java:
String a;
String ab = "Peter";
Mensch mensch1 = new Mensch();

Bedeutung Stack und Heap:
Im Stack ist a, ab und mensch1
a zeigt auf null in den Heap
ab speichert die Referenz von einem Objekt dass das Wort "Peter" enthält
mensch1 speichert die Referenz eines Objekts des Typs Mensch im Heap.

Ist das so korrekt?
 
Zuletzt bearbeitet von einem Moderator:

httpdigest

Top Contributor
Der Effekt der Deklaration einer lokalen Variablen ohne Initialisierung wie etwa bei `String a;` ist undefiniert. Es ist also nicht definiert, ob `a` jetzt nun als Inhalt die Nullreferenz hat oder nicht.
Du kannst z.B. eine solche deklarierte Variable nicht lesen, sondern sie muss zuvor erst gesichert zugewiesen sein, z.B. durch `a = null;` oder eben gleich bei der Deklaration.
Das geht so weit, dass du dir den Wert einer uninitialisierten Variable noch nicht mal im Debugger angucken kannst.

Desweiteren erkennt man auch nicht, ob das jetzt Deklarationen von lokalen Variablen sein sollen oder vielleicht Felder/Instanzvariablen einer Klasse.
Nehmen wir mal lokale Variablen an.

In diesem Fall:

"Im Stack ist a, ab und mensch1" -> Korrekt. (siehe JVMS 2.5.2 "Java Virtual Machine Stacks")

"a zeigt auf null in den Heap" -> Nein. Es ist nicht definiert, worauf `a` zeigt, oder ob es überhaupt existiert.

"ab speichert die Referenz von einem Objekt, das das Wort "Peter" enthält" -> Korrekt. Genauer speichert `a` die Referenz auf ein java.lang.String Objekt, welches den Text "Peter" repräsentiert.

"mensch1 speichert die Referenz eines Objekts des Typs Mensch im Heap." -> Korrekt.

Bezüglich Stack und Heap, weil es hier wiederum Mehrdeutigkeiten gibt, was genau damit gemeint sein kann:
Im Kontext der Java Virtual Machine Specification ist hier von dem JVM Stack und dem JVM Heap die Rede. Die JVM ist eine virtuelle Maschine, hat also erstmal überhaupt keine Äquivalenz zu einem realen Stack oder Heap einer realen Maschine.
Wenn man nun aber die virtuelle Maschine auf einer realen Maschine implementiert, dann macht man das natürlich so, dass die von der realen Maschine angebotenen Dinge wie der virtuelle Speicher (in Stack und Heap aufgeteilt) auch möglichst 1-zu-1 auf den JVM Stack und JVM Heap abgebildet werden. Zusätzlich kommen dann noch weitere Optimierungen, z. B. dass man Teile des JVM Heaps auf den Stackbereich der realen Maschine abbildet oder sogar auf Register (sofern die reale Maschine diese besitzt).
Das heißt, streng genommen wenn du im Zusammenhang mit Java oder der Java Virtual Machine von "Stack" oder "Heap" hörst, dann ist damit nicht der Hardware-Stack oder Heap einer realen Maschine (auf der die virtuelle Maschine implementiert ist) gemeint, wie etwa einem x86 Rechner, sondern es handelt sich dabei meist um den JVM Stack bzw. Heap der virtuellen Maschine. Und diese virtuelle Maschine kann dann natürlich auf beliebigen realen Maschinen, wie etwa einem BlueRay-Player oder eben einem x86, ARM oder PPC implementiert werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
B Erste Schritte Frage zu Instanzierung und Referenzen Java Basics - Anfänger-Themen 8
M Referenzen zuweisen und wird gleichzeitig ausgeführt Java Basics - Anfänger-Themen 6
B JaxB - Unique Name updaten / Referenzen in XML Java Basics - Anfänger-Themen 0
B Objekt kopieren und sämtliche Referenzen von diesem Objekt? Java Basics - Anfänger-Themen 3
B JaxB - Referenzen erstellen? Java Basics - Anfänger-Themen 2
Zrebna Frage zum "Referenzen-konzept" in Java Java Basics - Anfänger-Themen 8
B Datenbank: Entity mit vielen Referenzen? Ansatz so ok? Java Basics - Anfänger-Themen 8
scratchy1 Referenzen Java Basics - Anfänger-Themen 32
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
A Variablen Referenzen Java Basics - Anfänger-Themen 6
A GUI-Bedienelemente mit Zeiger/Referenzen-Array veralten Java Basics - Anfänger-Themen 4
K Operatoren 2D Int Array auf Null-Referenzen prüfen Java Basics - Anfänger-Themen 18
F Referenzen zwischen Methoden Java Basics - Anfänger-Themen 5
T Klassen Referenzen auf Klassen / Objekte Java Basics - Anfänger-Themen 5
J OOP Ein Fahrrad - zwei Besitzer: Zwei Referenzen auf ein Objekt Java Basics - Anfänger-Themen 43
C Referenzen zu Instanzen einer Klasse im Array Java Basics - Anfänger-Themen 8
K Collections Auf Referenzen in ArrayList zugreifen? Java Basics - Anfänger-Themen 3
B ArrayList.clear - Daten in allen Referenzen weg Java Basics - Anfänger-Themen 2
L Grundlegende Verständnisfrage Hasmap Referenzen Java Basics - Anfänger-Themen 4
C OOP Referenzen-Problem Java Basics - Anfänger-Themen 3
N Referenzen Problem Java Basics - Anfänger-Themen 2
K Referenzen - 2ter Versuch Java Basics - Anfänger-Themen 17
M Instanzen, Referenzen und Collections Java Basics - Anfänger-Themen 3
C Referenzen in Java Java Basics - Anfänger-Themen 11
J Referenzen vergleichen Java Basics - Anfänger-Themen 8
M Referenzen verschieben Java Basics - Anfänger-Themen 2
J Mehrere Referenzen auf ein Objekt Java Basics - Anfänger-Themen 6
M Referenzen Java Basics - Anfänger-Themen 11
G Netzwerk: RMI Objekt-Referenzen Java Basics - Anfänger-Themen 2
I clone() und Referenzen Java Basics - Anfänger-Themen 25
A Referenzen zu festen Werten machen? Java Basics - Anfänger-Themen 5
F Referenzen Java Basics - Anfänger-Themen 7
H Problem mit Events bzw. Referenzen Java Basics - Anfänger-Themen 4
M Zugriff auf Textfelder über Referenzen? Java Basics - Anfänger-Themen 3
F ArrayList! Pointer, Referenzen! Java Basics - Anfänger-Themen 4
K Verständnisfrage Collection, ArrayList und Referenzen Java Basics - Anfänger-Themen 4
H Begriff: Objekt enthält Referenzen Java Basics - Anfänger-Themen 3
J Referenzen Java Basics - Anfänger-Themen 5
P HashSet und Referenzen Java Basics - Anfänger-Themen 9
G Speicherung von Referenzen auf Instanzen Java Basics - Anfänger-Themen 5
T Referenzen. Java Basics - Anfänger-Themen 5
Z Referenzen in LinkedList Java Basics - Anfänger-Themen 3
F Referenzen in Java - Fehlerpotenzial ! Java Basics - Anfänger-Themen 5
G Instanzen und Referenzen Java Basics - Anfänger-Themen 5
G array auf null-referenzen überprüfen ! Java Basics - Anfänger-Themen 9
G Referenzen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben