Java Arrays und komplexe Datentypen?


01.06.2023, 20:52

MyClass[ ] myC = new MyClass[5];

=> 5 Referenzen erstellt

myC[0] = new MyClass(5, "heute" );

=> Rufe den Konstruktor von MyClass auf und übergebe ihn eine 5 als int und einen String "heute".

Nun habe ich Speicher reserviert und die Referenz

myC[0] verweist auf ein Objekt der MyClass-Klasse. Das Objekt hat die Attribute 5 und "heute".

2 Antworten

a)

ersteres soweit richtig

zweiteres fast. ihr verwechselt variablen und referenzen.

referenz = abstraktion eines Zeigers auf Objekte (werden manchmal synonym zu objekte benutzt)

Zeiger = zeigt auf die adresse einer bestimmten speicherregion (in javas fall objekte)

variablen = im code quasi eine kiste wo der programmierer referenzen speichert oder primitive datentypen (zahlen, wahrheitswerte, buchstaben). auf diese kann man zugreifen anhand vom namen

also wenn du ein String-Array erstellst, enthält dieses nicht referenzvariablen sondern referenzen. außerdem sind diese auf die NULL-Referenz gesetzt, weil das Array keine richtigen Strings enthält. beim int-Array ist das nicht der fall, da primitive daten nicht auf NULL gesetzt werden können und stattdessen auf einen standardwert (in deinem fall 0) gesetzt werden

b)

auch keine ahnung worauf du hinaus willst, aber deine ergänzung stimmt soweit. in deinem beispiel wäre ein fehler aufgetreten

zu a)

String[] s = new String[5];

s ist kein array von strings sondern ein array von referenzvariablen die wiederum auf instanzen von string klassen zeigt.

zu b)

verstehe ich nicht ganz was du meinst. zwischen string arrays und arrays von eigenen objekten gibt es eigentlich keinen großen unterschied, auch wenn die string klasse so ihre eigenheiten hat.

Woher ich das weiß:Studium / Ausbildung – Softwareentwickler, B. Sc. Informatik