0 Daumen
525 Aufrufe

Hallo Community

Warum kommt bei dem:

int[] b = new int[1];
int[] a;
a = b;
b[0] = 42;
a[0] = 21;
als Output von a[0] und b[0]: 21 raus?
Avatar von

1 Antwort

+2 Daumen
 
Beste Antwort

In JAVA bedeutet das Gleichsetzen von zwei Arrays nicht, dass alle Werte von b zu a übertragen werden. Stattdessen wird eine Referenz von b zu a und andersrum erstellt.

Das heißt, man greift mit beiden Variablen-Namen a und b auf dasselbe Array-Objekt zu. Ändert man einen Index mit Referenz a, wird man beim Abruf durch Referenz b diesen Wert erhalten.


Wenn du ein Array übertragen willst, nutze:

a = b.clone();
//oder
System.arraycopy(b, 0, a, 0, b.length());


Beste Grüße

Felix

Avatar von

Vielen Dank für die Erklärung! Hat mir geholfen

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community