Nur eines, erzeugt in der main()
.
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:
ArrayDemo
wird in einem gestrichelten Rahmen gezeigt,
da es sich um eine Klassendefinition handelt und nicht um ein Objekt.
main()
von ArrayDemo
wird ausgeführt.ar1
verweist auf das Array Objekt.findMax()
Methode
mit dem Parameter ar1
aufgerufen wird.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.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.
(Verständnisfrage: )
Könnte die
main()
Methode ein zweites Array erzeugen und die
findMax()
Methode verwenden, um dessen Maximum zu finden?