Hallo,
warum wird ein Array verändert, wenn man es einer Methode übergibt, die die Einträge des übergebenen Array verändert, aber kein Array zurückgibt, aber ein z.B. ein int (als Beisiel für einen primitiven Datentyp) oder String (als Beispiel für einen Referenztyp) nicht?
Auf ein Array hat eine Methode offensichtlich einen Seiteneffekt, warum? Ich dachte Parameter werden in Java per call-by-value übergeben?
Zur Verdeutlichung meiner Frage folgenden Codeabschnitt:
Über eure Hilfe würde ich mich freuen.
Vielen Dank!
warum wird ein Array verändert, wenn man es einer Methode übergibt, die die Einträge des übergebenen Array verändert, aber kein Array zurückgibt, aber ein z.B. ein int (als Beisiel für einen primitiven Datentyp) oder String (als Beispiel für einen Referenztyp) nicht?
Auf ein Array hat eine Methode offensichtlich einen Seiteneffekt, warum? Ich dachte Parameter werden in Java per call-by-value übergeben?
Zur Verdeutlichung meiner Frage folgenden Codeabschnitt:
Java:
public static void main(String[] args) {
int[] a = {1,2,3,4,5,6,7,8,9};
setTo2(a);
for (int zahl : a)
System.out.printf("%d ", zahl); // 2 2 2 2 2 2 2 2 2
System.out.printf("\n");
int b = 1;
setTo2(b);
System.out.println(b); // 1
String c = new String("eins");
setTo2(c);
System.out.println(c); // eins
}
static void setTo2(int[] array) {
for (int i = 0; i < array.length; i++) {
array[i] = 2;
}
}
static void setTo2(int arg) {
arg = 2;
}
static void setTo2(String arg) {
arg = "zwei";
}
}
Über eure Hilfe würde ich mich freuen.
Vielen Dank!