Wie lauten die zwei Syntaxvarianten zur Deklaration einer (eindimensionalen) Array-Variable?
datentyp[] var
datentyp var[]
Kann die Größe von Java-Array nachträglich verändert werden? Warum/Warum nicht?
Die Größe eines Arrays kann nicht nachträglich verändert werden. Arrays belegen einen zusammenhängenden Platz im Arbeitsspeicher, der Platz ist vorreserviert und kann nicht mehr angepasst werden.
Seite 121: "Arrays können auch in for-each
-Schleifen durchlaufen werden. Die Array-Elemente können dann jedoch nur gelesen, nicht aber verändert werden."
Warum können die Elemente nicht verändert werden? Erläutern Sie.
Die Elemente werden einzeln einer Variable zugewiesen (Ihnen fehlt z.B. auch der Index für einen Zugriff).
Seite 121: Was ist wohl mit "echten mehrdimensionalen Arrays" gemeint?
Die Speicherorganisation ist nicht verschachtelt, sondern sequentiell.
In Java muss man sich immer im Klaren darüber sein, dass jedes Array intern eindimensional ist. Methoden zur Bearbeitung von Arrays verarbeiten nur eine Ebene. Mehrdimensionale Arrays sind quasi ein 'Trick', bei dem Array-Elemente selbst wieder Arrays sind.
Seite 122: Warum for(int j=0; j<x[i].length; j)` beim Durchlauf von zweidimensionalen Arrays? Warum nicht `for(int j=0; j<x[0].length; j)
?
Weil die einzelnen Zeilen des Arrays unterschiedliche Längen haben könnte.
Ist \u0000
wirklich das Zeichen 0
? Deklarieren Sie in der JShell ein leeres char-Array und geben Sie den Inhalt aus.
jshell> char[] ar = new char[1];
ar ==> char[1] { ' ' }
Das ist kein "echtes" Leerzeichen (im Sinne der "Leertaste" auf Ihrer Tastatur), sondern das Unicode "Null"-Zeichen.
Welchen Typ hat ein Array, das auf der Konsole als [Ljava.lang.String;@ff5b51f
ausgegeben wird?
String[]
Wie könnte man eine "schönere" String-Darstellung des Arrays aus der letzten Aufgabe erhalten?
Mit der Arrays.toString
-Methode.
Was ist eine Shallow-Copy?
Man kopiert das Arrays. Enthält das Arrays Referenzen, werden auch die Referenzen kopiert, nicht die referenzierten Elemente. Das heißt, die Referenzen werden zwischen dem ursprünglichen und der Kopie geteilt.
Worauf muss man beim Kopieren von mehrdimensionalen Arrays achten?
Die clone
-Methode (und auch andere Kopiermethoden der Java-API) erzeugen nur eine Shallow-Copy, bei der nur auf der obersten ebene Kopiert wird. Die einzelnen Teil-Arrays sind immer noch identisch (gleiche Referenz), so dass Änderungen an der Kopie sich auf das Original auswirken.
Was müsste man tun, um eine Deep-Copy eines Arrays zu erhalten?
Man muss dann auch die referenzierten Instanzen kopieren und die Referenzen innerhalb dieser Instanzen etc.
Es gibt zwei Probleme mit dem folgenden Snippet. Welche?
Array.sort(new int[]{5,7,-1,3,2})
-
Es fehlt das "s":
Arrays
-
Das Array wird an der Stelle sortiert, aber man kommt an das Ergebnis nicht dran, weil man keine Referenz auf das Array mehr hat.