Skip to content

Latest commit

 

History

History
125 lines (96 loc) · 3.89 KB

Kap.5.adoc

File metadata and controls

125 lines (96 loc) · 3.89 KB

Frage

Wie lauten die zwei Syntaxvarianten zur Deklaration einer (eindimensionalen) Array-Variable?

Antwort
datentyp[] var
datentyp var[]

Frage

Kann die Größe von Java-Array nachträglich verändert werden? Warum/Warum nicht?

Antwort

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.

Frage

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.

Antwort

Die Elemente werden einzeln einer Variable zugewiesen (Ihnen fehlt z.B. auch der Index für einen Zugriff).

Frage

Seite 121: Was ist wohl mit "echten mehrdimensionalen Arrays" gemeint?

Antwort

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.

Frage

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)?

Antwort

Weil die einzelnen Zeilen des Arrays unterschiedliche Längen haben könnte.

Frage

Ist \u0000 wirklich das Zeichen 0? Deklarieren Sie in der JShell ein leeres char-Array und geben Sie den Inhalt aus.

Antwort
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.

Frage

Welchen Typ hat ein Array, das auf der Konsole als [Ljava.lang.String;@ff5b51f ausgegeben wird?

Antwort
String[]

Frage

Wie könnte man eine "schönere" String-Darstellung des Arrays aus der letzten Aufgabe erhalten?

Antwort

Mit der Arrays.toString-Methode.

Frage

Was ist eine Shallow-Copy?

Antwort

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.

Frage

Worauf muss man beim Kopieren von mehrdimensionalen Arrays achten?

Antwort

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.

Frage

Was müsste man tun, um eine Deep-Copy eines Arrays zu erhalten?

Antwort

Man muss dann auch die referenzierten Instanzen kopieren und die Referenzen innerhalb dieser Instanzen etc.

Frage

Es gibt zwei Probleme mit dem folgenden Snippet. Welche? Array.sort(new int[]{5,7,-1,3,2})

Antwort
  • 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.

Frage

Seite 126: Ändern Sie die Deklaration des Arrays so, dass der Code von Herrn Kofler auf die Nase fällt. Sie dürfen weder den Typ noch den Namen des Arrays verändern.

Antwort
int x[] = { };`

Wenn es kein Element im Array gibt, wird x[0] eine Ausnahme werfen!