Hallo,
obwohl ich schon lange mit Java gearbeitet habe, ist mir erst jetzt etwas aufgefallen, was ich zuvor nicht für möglich gehalten habe. Das Beispiel ist wie folgt:
Das Array hat zuerst die Reihenfolge 1,2,3. Danach wird es der Methode umsortieren übergeben, welche zwei Zahlen im Array einfach austauscht. Nun ist es aber so, dass die Methode "umsortieren" das veränderte Array nicht wieder returnt. Wenn ich das Array nach der umsortieren-Methode in der main-Methode wieder ausgebe, ist die Reihenfolge 1,3,2.
Wie ist das möglich? Das Array "array" befindet sich doch in der main-Methode und ist nicht außerhalb als global festgelegt und trotzdem wird es verändert zurückgegeben? Habe ich etwas Grundlegendes missverstanden?
Und warum funktioniert es nicht mit einfachen Zahlen, wie im folgenden Beispiel:
Hier wird wieder der richtige Wert "1" ausgegeben, wie ich es eigentlich auch beim Array erwartet hätte.
obwohl ich schon lange mit Java gearbeitet habe, ist mir erst jetzt etwas aufgefallen, was ich zuvor nicht für möglich gehalten habe. Das Beispiel ist wie folgt:
Java:
public class ArrayMod{
public static void main(String[] args){
int[] array = {1,2,3};
umsortieren( array );
for(int i=0 ; i<array.length ; i++)
System.out.print(array[i]);
}
public static void umsortieren(int[] a){
int t = a[1];
a[1] = a[2];
a[2] = t;
}
}
Das Array hat zuerst die Reihenfolge 1,2,3. Danach wird es der Methode umsortieren übergeben, welche zwei Zahlen im Array einfach austauscht. Nun ist es aber so, dass die Methode "umsortieren" das veränderte Array nicht wieder returnt. Wenn ich das Array nach der umsortieren-Methode in der main-Methode wieder ausgebe, ist die Reihenfolge 1,3,2.
Wie ist das möglich? Das Array "array" befindet sich doch in der main-Methode und ist nicht außerhalb als global festgelegt und trotzdem wird es verändert zurückgegeben? Habe ich etwas Grundlegendes missverstanden?
Und warum funktioniert es nicht mit einfachen Zahlen, wie im folgenden Beispiel:
Java:
public class ZahlMod{
public static void main(String[] args){
int zahl = 1;
veraendern(zahl);
System.out.print(zahl);
}
public static void veraendern(int z){
z = 2;
}
}
Hier wird wieder der richtige Wert "1" ausgegeben, wie ich es eigentlich auch beim Array erwartet hätte.
Zuletzt bearbeitet: