zur vorherigen Seite zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

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

   }
}

Werte von Zelle zu Zelle kopieren


zwei Arrays


zwei Referenzen auf ein Array

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:

Superbug
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).


FRAGE 13:

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] );
zur vorherigen Seite zum Inhaltsverzeichnis   zur nächsten Seite