Eine gute Antwort könnte sein:

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 print() 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 print() Methode läuft, hat sie eine Referenz auf dieses Array in ihrem Parameter x. Hier sind einige Details:

  1. ArrayDemo wird mit gestrichelten Linien gezeigt, da es eine Klassendefinition ist, und kein Objekt.
  2. Die statische Methode main() von ArrayDemo läuft.
  3. Die Variable ar1 verweist auf das Arrayobjekt.
  4. Die Variable operate verweist auf ein ArrayOps-Objekt.
  5. Die Abbildung zeigt was passiert, wenn die print() Methode von operate 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 print() 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 über Dinge in einer solchen Detailversesssenheit nach. Sie würden denken "eine Methode aufrufen um ein Array auszugeben" und würden schreiben

operate.print( 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. Wenn Sie durch diesen Stoff eilen, 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 print() Methode mit ihm verwenden?