8.581
Bearbeitungen
Jneug (Diskussion | Beiträge) (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…“) |
Jneug (Diskussion | Beiträge) 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 | 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>. |
Bearbeitungen