Frage:
Hey Leute ich habe eine allgemeine Frage zu call-by-value und call-by-reference.
Und zwar sollte ich folgende Aufgabe lösen:
Ich habe einen Java Code gegeben (Jedoch sollen Arrays, anders als in Java wie primitive Datentypen behandelt werden)
public class ParameterPassing {
public static int x = 1;
public static int[] y = {0,2}
public void foo(int a, int[] b, int[] c) {
a = c[x];
c[0] = x;
x = 0;
b[1] = y[1] + c[x];
System.out.println("foo 1: " + x + " " + c[1] + " " + b[0]);
System.out.println("foo 2: " + x + " " + y[0] + " " + y[1]);
}
public static void main(String[] args) {
foo (y[x], y, y);
System.out.println("main: " + x + " " + y[0] + " " + y[1]);
}
}
Nun soll ich die Ausgabe für
(a) Call by reference
(b) Call by value
angeben. Meine Ergebnisse:
Call by reference: foo 1: 0 3 1
foo 2: 0 1 3
main: 0 1 3
Call by value: foo 1: 1 2 0
foo 2: 1 0 2
main: 1 0 2
Stimmt das so? Und allgemein habe ich mich gefragt, wenn ich in einer Methode eine Variable verändere, die außerhalb der Methode deklariert und initialisiert wurde, also in diesem Fall das x. Ändert sich dieses dann auch außerhalb(bei call by value und call by reference)? Oder hat das keinen Einfluss auf das äußere x?
Ich würde mich über eine Antwort freuen.