Array mit einem anderen Array gleichsetzten Java?

2 Antworten

Kannst Du nicht... (mit einer einfachen Zuweisung) , Arrays werden Referenziert, und Du hast im schlechtesten Fall nur ein "echtes" Array und alle anderen Variablen verweisen lediglich auf dieses...

Bei einer einfachen Zuweisung einer Arrayvarible an eine andere Variable wird in Java (und den meisten anderen gängigen Programmiersprachen) lediglich eine Referenz gespeichert, welche auf das Original verweist. Das bedeutet, dass eine solche Kopie sich sich bei einer Änderung des Orginals ebenfalls ändert. (...und umgekehrt)

int intArray[] = {12,15,17};
int copyArray[] = new int[intArray.length];
copyArray = intArray;
copyArray[1]++
//nun haben beide den Inhalt 12,16,17


Möchtest Du eine "echte" Kopie des Objekts anlegen kannst Du die enthaltenen Werte per Loop der Kopie zuweisen:

for (int i=0; i<intArray.length; i++) {copyArray[i] = intArray[i];}

Was natürlich auch nur reibungslos klappt, wenn die Arrayelemente ihrerseits Basistypen sind. (Objecttypen werden weiterhin referenziert !).

Das Arrayobject verfügt selbst über die nötigen (schnellen) Methoden um eine "Deep Copy" zu erstellen.

  • System.arraycopy(...)
  • System.copyOfRange(...)
  • SourceObject.clone()

Ich gehe hier nicht auf Einzelheiten ein. Siehe dazu:

Die Wahl der Methode hängt von der Komplexität der Quelle ab.

Ja, kannst du machen. Ist im einfachsten Fall ja nur eine Zuweisung.


Erzesel  18.11.2024, 08:52

...nö...

Bei normalen Zuweisungen von Arrays (Objects) hast Du keine Kopie der enthaltenen Werte, sondern eine Referenz .