0 Daumen
389 Aufrufe

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.

Avatar von

1 Antwort

0 Daumen
 
Beste Antwort

x hat zum Zeitpunkt der Ausgabe den Wert 0, unabhängig von call-by-value und call-by-reference.

Ansonsten ist die Ausgabe richtig.

Avatar von 5,7 k

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community