zur nächsten Seite  zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Nur eines, erzeugt in der main().


Call by Value

call by value

Die Abbildung zeigt die Ausführung des Programms im Moment in dem die findMax() Methode zu starten beginnt: Denkt daran, dass Java call by value verwendet, um Daten an Methoden zu übergeben. Bei Array Parametern enthält der aktuelle Parameter in ar1 eine Referenz auf das Array. Dieser Wert wird in den formalen Parameter x der Methode kopiert.

Es gibt nur ein Array Objekt, das in der main() erzeugt wurde. Wenn die findMax() Methode ausgeführt wird, hat sie Referenz auf dieses Array in ihrem formalen Parameter x. Hier sind ein paar Details:

  1. ArrayDemo wird in einem gestrichelten Rahmen gezeigt, da es sich um eine Klassendefinition handelt und nicht um ein Objekt.
  2. Die Klassenmethode main() von ArrayDemo wird ausgeführt.
  3. Die Variable ar1 verweist auf das Array Objekt.
  4. Die Abbildung zeigt was passiert, wenn die findMax() Methode mit dem Parameter ar1 aufgerufen wird.
  5. In dem Moment in dem die Methode zu starten beginnt verweist der formale Parameter x auf dasselbe Objekt wie die Variable ar1 in der main().
    • x verweist auf das Array nur nachdem die Methode aufgerufen wurde und noch ausgeführt wird.
  6. Wenn die Methode beendet ist und an den
    Aufrufer einen Wert zurückgibt, verweist x nicht länger auf ein Objekt.
    • x ist nur während der Dauer des Methodenaufrufs an das Array gebunden.

Jetzt wird die findMax() Methode ausgeführt und verwendet x, um auf das Array zu verweisen mit dem sie arbeitet. Wenn die Methode beendet wird, kehrt die Kontrolle zurück zu main().

Üblicherweise denkt man nicht in dieser Ausführlichkeit darüber nach. Wir würden denken "Rufe die Methode, um das Maximum zu finden" und würden schreiben:

ArrayOps.findMax( ar1 );

Aber manchmal müssen wir genau wissen was vor sich geht. Also betrachtet die Abbildung ausführlich und lest die Details ein paar Mal. Ansonsten riskiert Ihr es wichtige Konzepte zu verpassen, die für das Verständnis zukünftiger Themen notwendig sind.


FRAGE 5:

(Test der Details: ) Könnte die main() Methode ein zweites Array erzeugen und die findMax() Methode verwenden, um dessen Maximum zu finden?

zur nächsten Seite  zum Inhaltsverzeichnis   zur nächsten Seite