Auf Thema antworten

Okay, einen Versuch mach ich noch:


Wir haben folgendes array:

[code=Java]int[] array = {1,2,3,4,5};[/code]


Dein erster Code-Schnipsel:

[code=Java]

        for (int i : array ) {// = for(int x=0;x<array.length;x++){ int i = array[x];

            i = 42;

        }

[/code]Verändert das Array NICHT. Es ist immernoch 1,2,3,4,5. Eben weil du nur die Variable i überschreibst. Diese enthält zwar den Wert an der Stelle x, aber sie "aktualisiert" ihn nicht, wenn du die "i" änderst. Zu beachten ist hier auch, dass "i" NICHT der index ist. Ähnlich wäre:

[code=Java]List<String> list = new ArrayList();

String s = "hello";

list.add(s); //s wird by value übergeben. Die add-Methode erhält eine Kopie.

s = "world";//ändert NICHT die Liste, sondern nur den Variableninhalt von s

[/code]


Dein zweiter Code (vereinfacht - ich habe statt "i" wieder "x" für den index genommen, wie im obigen Code auch):

[code=Java]

        for (int x=0; x<array.length; x++) {

           array[x] = 42;

        }

[/code]Das Array ist hinterher 42,42,42,42,42. Da du an jedem index "x" den Wert im Array auf den 42 setzt. Zu beachten ist her, dass die Variable "i" aus dem ersten Code-Schnipsel gar nicht auftaucht. Wollten wir ein "i" einfügen, das sich genauso wie im ersten Code-Schnipsel verhält, würde das so aussehen:

[code=Java]  for (int x=0; x<array.length; x++) {

           array[x] = 42;

           int i = x; // sinnlos, da mit i nichts gemacht wird.

        }[/code]


Ich denke dich verwirrst die Tatsache, dass du in beiden Code-Schnipseln eine Variable "i" verwendest, die aber jeweils für einen völlig anderen Wert steht. Denk nochmal drüber nach. ;)


PS: Dieser Artikel könnte vielleicht für dich interessant sein.



Oben