Lernpfad:Objektorientierte Programmierung mit Java/Komplexe Arrays: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
keine Bearbeitungszusammenfassung
(Die Seite wurde neu angelegt: „{{Navigation}} == Objektarrays == Arrays können nicht nur primitive Datentypen speichern, sondern auch komplexe Typen - also Objekte. Jedes Element ist dann…“)
 
Keine Bearbeitungszusammenfassung
Zeile 18: Zeile 18:
[[Datei:Java Objektarray.jpg|center|600px]]
[[Datei:Java Objektarray.jpg|center|600px]]


Eine Änderung an dem Objekt <code>r1</code> kann hier mit <code>wuerfel[1]</code> oder <code>wuerfel[4]</code> erfolgen.
Eine Änderung an dem Objekt <code>r1</code> kann hier mit <code>wuerfel[1]</code> oder <code>wuerfel[4]</code> erfolgen. Der Inhalt des Index <code>5</code> ist <code>null</code>, da noch keine Objektinstanz zugewiesen wurde.


=== Umgang mit Nullreferenzen ===
=== Umgang mit Nullreferenzen ===


Im Gegensatz zu primitiven Datentypen haben Objektreferenzen <code>null</code> als Initialwert. Das bedeutet, ein Objektarray enthält zu Beginn nur den Wert <code>null</code>. Wird ein Index nicht mit einer Objektreferenz initialisiert, dann bleibt dort immer der Wert <code>null</code> gespeichert. (Im Beispiel oben der Index <code>5</code>.)
Im Gegensatz zu Variablen werden die Inhalte eines Objektarrays mit dem Wert <code>null</code> initialisiert, auch, wenn noch keine Zuweisung stattgefunden hat.
 
<syntaxhighlight lang="Java">
// Objektreferenzen
Random zufall;
zufall.nextInt(); // Fehler: variable zufall might not have been initialized
 
Random zufall2 = null;
zufall2.nextInt(); // java.lang.NullPointerException: Cannot invoke "java.util.Random.nextInt()" because "zufall2" is null
 
Random zufall3 = new Random();
zufall3.nextInt(); // Funktioniert
 
// Objektarrays
Random[] wuerfel;
wuerfel[0].nextInt(); // Fehler: variable wuerfel might not have been initialized
 
Random[] wuerfel2 = new Random[2];
wuerfel2[0].nextInt(); // java.lang.NullPointerException: Cannot invoke "java.util.Random.nextInt()" because "wuerfel2[0]" is null
 
Random[] wuerfel3 = new Random[2];
wuerfel3[0] = new Random();
wuerfel3[0].nextInt(); // Funktioniert
</syntaxhighlight>
 
Das bedeutet, ein Objektarray enthält zu Beginn überall den Wert <code>null</code>. Wird ein Index nicht mit einer Objektreferenz initialisiert, dann bleibt dort immer der Wert <code>null</code> gespeichert. (Im Beispiel oben der Index <code>5</code>.)


Wenn du nun mit einer Zählschleife über ein Objektarray iterierst, dann musst du vor dem Zugriff auf das Objekt prüfen, ob überhaupt ein Objekt vorhanden ist, oder nur <code>null</code>.
Wenn du nun mit einer Zählschleife über ein Objektarray iterierst, dann musst du vor dem Zugriff auf das Objekt prüfen, ob überhaupt ein Objekt vorhanden ist, oder nur <code>null</code>.
8.581

Bearbeitungen

Navigationsmenü