Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
evlt kann mir ja jemand weiterhelfen. Und zwar habe ich 2 Fragen
1. Ich habe vor ein ArrayA zu füllen und dessen Werte in ein ArrayB zu "kopieren". Nun ist es ja so das durch die einfache Zuweisung...
Java:
ArrayB=ArrayA
nur auf ArrayA verwiesen wird, es sich also nicht um wirkliche Kopien handelt, da bei einer neuen Zuweisung von z.B. ArrayA[5]=99 auch ArrayB[5]=99 wird. Durch das Klonen kann ich dieses Problem
natürlich lösen. Meine Frage ist. Falls ich das ArrayA nun nicht klone sondern über eine simple for schleife die Elemente einzeln "kopiere?"...
Java:
for(i=0; i<=x-1; i++)
ArrayB[i]=ArrayA[i];
handelt es sich dann hierbei um wirkliche Kopien oder auch nur Referenzen auf das Ursprungsarray?
2. Ich habe versucht ein Point Array über die selbe for schleife zu kopieren. Leider erfolglos. punkte[] ist gefüllt.
Java:
punkteB[9]=punkteA[9]
Kann mir jemand den Grund verraten wieso das nicht funktioniert? Auch...
zeigen dann auf unterschiedliche Arrays mit dem gleichen Inhalt.
Klonen geht leichter/schneller über [JAPI]Object#clone()[/JAPI] oder [JAPI]System#arraycopy(java.lang.Object, int, java.lang.Object, int, int)[/JAPI].
kopiert die Elemente nur bei primitiven Datentypen.
Wenn du Objekte in deinem Array hast, werden nur die Referenzen kopiert.
Somit verweisen ArrayA[x] und ArrayB[x] jeweils auf das selbe Objekt.
Eine Änderung an einem Attribut von ArrayA[x] würde also in beiden Arrays zum Tragen kommen.
normalerweise macht man arrayName.clone() ...
damit wird zwar nur das array geclont ... also die referenzen kopiert (bei primitiven datentypen natürlich diese direkt) ... und hat zur folge das wenn man ein einem objekt rumspielt es eben nur das eine objekt ist ... allerdings ist der hinter array-cloning das man das ausgangs-array an sich verändern kann ohne das es auswirkungen auf die kopie hat ...
will man wirklich das auch die objekte im array nicht nur als referenz kopiert werden sondern völlig neue objekte entstehen brauchst du sog. Deep-Cloning ...