Wie funktioniert die Array-Zuweisung und das Kopieren von Arrays?

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.

  1. In den Zeilen 4 – 6 wird mit einer for-Schleife jedes Array-Element einzeln von a1 nach a3 kopiert.
  2. 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.
  3. 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.
  4. 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();