Eine gute Antwort wäre:

Der Parameter x enthält eine Referenz auf das Objekt, das main() erzeugt hat.

Call-By-Value

Hier ist eine Abbildung, die zeigt wie das Programm bei der Ausführung aussieht, gerade in dem Moment, wenn die ausgeben() Methode zu starten beginnt. Denken Sie daran, dass Java Call-By-Value verwendet, um Daten an Methoden zu übergeben. Bei Arrayparametern bedeutet dies, dass der Parameter den Wert einer Referenz auf ein Array enthält.

Es gibt nur ein Arrayobjekt, das eine, dass durch die main() Methode erzeugt wurde. Wenn die ausgeben() Methode läuft, hat sie eine Referenz auf dieses Array in ihrem Parameter x. Hier sind einige Details:

  1. ArrayTester wird mit gestrichelten Linien gezeigt, da es eine Klassendefinition ist, und kein Objekt.
  2. Die statische Methode main() von ArrayTester läuft.
  3. Die Variable ar1 verweist auf das Arrayobjekt.
  4. Die Variable arrTool verweist auf ein ArrayTools-Objekt.
  5. Die Abbildung zeigt was passiert, wenn die ausgeben() Methode von arrTool mit ar1 als Parameter aufgerufen wird.
  6. Gleich nach dem Aufruf verweist der formale Parameter x auf dasselbe Objekt wie die Variable ar1.

Jetzt läuft die ausgeben() Methode, indem sie den Inhalt von x verwendet, um auf das Array zu verweisen mit dem sie arbeitet. Während sie läuft, arbeitet die Methode mit x genauso wie der Code der vorherigen Kapitel. Wenn sie fertig ist, kehrt die Kontrolle zu main() zurück.

Üblicherweise denken Sie nicht mit einer solchen Detailversesssenheit über diese Dinge nach. Sie würden denken "eine Methode aufrufen, um ein Array auszugeben" und würden schreiben

arrTool.ausgeben( ar1 );

Aber manchmal müssen Sie wirklich wissen, was vor sich geht. Schauen Sie bitte die Abbildung aufmerksam durch und lesen Sie die Details ein paar Mal durch. Wenn Sie diesen Stoff zu schnell durcheilen, riskieren Sie es Konzepte zu verpassen, die für das Verständnis der zukünftigen Themen notwendig sind.

FRAGE 4:

(Verständnistest:) Könnte die main() Methode ein zweites Array erzeugen und die ausgeben() Methode mit ihm verwenden?

Inhaltsverzeichnis