Frage zu einem kleinen programm mit array's

Status
Nicht offen für weitere Antworten.

timbo

Mitglied
Hallo, ich hab eine frage zu dem programm..

Code:
public class Example
{
  public static void main(String[] args)
   {
     int[] array = new int[2];
     int[] copy = array;

     array[0] = 0;
     array[1] = 1;

     System.out.println(array[0]);
     System.out.println(array[1]);

     copy[1] = 2;

     System.out.println(array[1]);
   }
}

Als Ausgabe bekommt man:
0
1
2

aber warum?
warum braucht man hier nicht noch array[1] = copy[2] einfügen?

ich denke mal die antwort ist simpel, aber vielleicht kann mir ja jemand helfen.. 🙂
 
call by value hab ich schon mal gelesen aber kann jetzt direkt nix damit anfangen...

also mit int[] copy = array; hab ich dann ein und den selben array wenn ich werte in einem änder dann ändern sich die werte in dem anderen automatisch auch.. wozu ist das dann gut?
 
naja, wenn du willst dass copy den gleichen inhalt wie array hat, aber nicht das selbe array darstellen soll, dann solltest du ne copyfunktion aus dem Array-Package verwenden, weis jez den befehl aber auch nicht auswendig
 
Arrays sind in Java Referenztypen. Mit call by value hat das gar nichts zu tun.

array ist eine Referenz auf ein Array, und copy ist eine Referenz auf dasselbe Array. Wenn Du ein Array tatsächlich kopieren möchtest, dann musst Du sowas schreiben:

Code:
copy = array.clone();
 
ok. danke für die antwort..
also mit der deklaration
int[] copy = array;
erstelle ich einen zweiten array welcher immer die gleichen werte an nimmt wie der erste array und umgedreht..

und wenn ich einen kompletten array nur ein mal kopieren möchte dann mit
copy = array.clone();

ist das richtig?
 
timbo hat gesagt.:
also mit der deklaration
int[] copy = array;
erstelle ich einen zweiten array
Nein! Die Erstellung eines neuen Arrays geschieht mit dem new-Operator, welcher eine Referenz auf das erstellte Array zurückliefert.

Eine Variable vom Typ int[] speichert kein int-Array, sondern eine Referenz auf ein int-Array. Durch die Zuweisung copy = array kopierst Du nur die Referenz. Beide Variablen zeigen auf dasselbe Array.

clone liefert eine Referenz auf ein neues Array, welches die gleichen Werte hat wie das Original-Array. Es ist aber ein anderes Array, was Du daran merkst, dass Änderungen sich nicht auf das Original-Array auswirken.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben