Zuweisung:
Arrays sind Referenzdatentypen. Variablen eines Referenzdatentyps beinhalten einen Verweis auf den Speicherort der Daten.
Wird ein Array a einer Variable b zugewiesen, wird das Array auf das a zeigt nicht kopiert, sondern eine zusätzliche Referenz b auf das Array gesetzt. Die Referenzen a und b zeigen also auf dasselbe Array. Wird über b ein Wert im Array verändert, greift auch a auf diesen veränderten Wert zu.
Beispiel:
int a[] = new int[10]; int b[] = a; // b ist Referenz auf das Array a, a und b zeigen auf dasselbe Array b[2] = 123; // Das von a und b referenzierte Array bekommt am Index 2 einen Wert zugewiesen System.out.println(a[2]); // 123 wird ausgegeben
Kopieren:
In Java gibt es unterschiedliche Möglichkeiten ein Array zu kopieren. Einige davon sind in der folgenden Code-Sequenz ausgeführt.
- In den Zeilen 4 – 6 wird mit einer for-Schleife jedes Array-Element einzeln von a1 nach a3 kopiert.
- in Zeile 8 wird das Array mit der Methode arraycopy() der Klasse System kopiert. Die Parameter sind im Artikel “Wie erweitert man ein Array?” in unserer FAQ beschrieben.
- In Zeile 10 wird java.util.Arrays.copyOf() verwendet. Der erste Parameter der Methode ist das zu kopierende Array, der zweite Parameter ist die Größe des neuen Arrays.
- In Zeile 12 wird das Array mit der Methode clone() der Klasse Object kopiert.
int[] a = { 1, 4, 9, 16, 25 }; int[] b = new int[5]; for (int i = 0; i < a.length; i++) { b[i] = a[i]; } System.arraycopy(a, 0, b, 0, a.length); b = Arrays.copyOf(a, a.length); b = a.clone();