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] );