0 Daumen
744 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

Ähnliche Fragen

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community