class ArrayBsp4
{
public static void main ( String[] args )
{
int[] dataA = { 12, 23, 45, 56 };
int[] dataB = new int[4];
dataB[ 0 ] = dataA[ 0 ] ;
dataB[ 1 ] = dataA[ 1 ] ;
dataB[ 2 ] = dataA[ 2 ] ;
dataB[ 3 ] = dataA[ 3 ] ;
}
}
In diesem Beispiel wird das int in der Zelle 0 von dataA in die Zelle 0 von dataB kopiert und so weiter.
Das ist genau das Gleiche wie die Zuweisungsanweisung
wert = neuerWert
bei der beide Variablen vom primitiven Typ int sind.
Nachdem die vier Zuweisungsanweisungen (siehe Antwort) ausgeführt wurden,
enthalten beide Arrays die gleichen Werte in der gleichen Reihenfolge:
Warnung Superbug: Die folgende Anweisung macht nicht das Gleiche:
dataB = dataA ;
Denkt daran, dass Arrays Objekte sind. Die oben stehende Anweisung
kopiert lediglich die Objektreferenz in dataA in die Objektreferenzvariable dataB, damit gibt es zwei Möglichkeiten auf ein einziges Arrayobjekt zu zugreifen:
Das Objekt, das dataB vorher referenziert hat, ist jetzt verloren
(es ist Datenmüll geworden).
dataA und dataB sind jetzt Aliase für dasselbe Objekt.
Das Arrayobjekt, das dataB vorher referenziert hat, ist jetzt Datenausschuss (es sei denn es gibt noch eine andere Referenzvariable, die darauf verweist).
Angenommen, dass die Anweisung dataB = dataA ausgeführt wurde
(siehe die obenstehende Abbildung).
Was würde das Folgende ausgeben?
dataA[2] = 999; System.out.println( dataA[2] + " " + dataB[2] );