[Java] Kann mir jemand mit einem ganz einfachem Beispiel die Verwendung von "return" erklären?

... komplette Frage anzeigen

3 Antworten

"return" ist keine Klasse, sondern ein Befehl (statement).

In Java definierst Du so genannte Methoden, die ein bisschen sowas sind, wie Funktionen in der Mathematik. Sie nehmen ein paar Werte (Argumente, Parameter) entgegen und liefern einen Wert zurück.

Vergleiche Mathematik: f(x) = x^2

Nimmt auch einen Parameter (x) entgegen und liefert einen Funktionswert zurück.

In Java könntest Du beispielsweise folgendes schreiben.

private static double f(double x) {
return x * x;
}

Wenn ich jetzt die Funktion (z. B. aus "main(...)" heraus) aufrufe ...

double y = f(3.0);

... dann wird meine Variable y hinterher den Wert 9.0 (= 3.0 * 3.0) enthalten. Diesen Wert hat die Funktion f zurückgegeben.

Faktisch passiert sowohl die Übergabe von Argumenten, als auch des Rückgabewerts über den so genannten Stack (Stapelspeicher). Die aufrufende Funktion legt beim Aufruf die Parameter (entsprechend einer so genannten "Aufrufkonvention", oftmals "von rechts nach links") auf den Stack des Prozessors. Außerdem wird noch die Rücksprungadresse (wo der "instruction pointer"/Befehlszähler des Prozessors bzw. der JVM gerade steht) auf den Stack gelegt, damit der Prozessor bzw. die JVM weiß, an welcher Stelle das Programm nach dem Aufruf der Funktion weiterläuft.

Die Funktion kann dann mit den Parametern arbeiten. Wenn sie fertig ist, "räumt sie den Stack ab", entfernt zunächst alle Parameter vom Stack, holt anschließend die Rücksprungadresse vom Stack, speichert sie in ein Register, legt stattdessen ihr Ergebnis (das hinter dem "return"-Statement) auf den Stack und läd dann die Rücksprungadresse in den Befehlszähler, sodass nach dem Aufruf weitergearbeitet wird. Der aufrufende Code nimmt dann widerum den Rückgabewert vom Stack und speichert ihn irgendwo.

Das "return"-Statement bewirkt also zweierlei Dinge.

  1. Das Ergebnis der Funktion wird auf den Stack geschrieben und steht dem Aufrufenden (als "Ergebnis des Aufrufs") bereit.
  2. Die Ausführung der Funktion wird an der Stelle des Return-Statements abgebrochen. Code, der danach folgt, wird nicht mehr ausgeführt. Die Ausführung wird an dem (Maschinen- oder Bytecode-)Befehl, der nach dem Funktionsaufruf ("call" instruction) folgt, fortgesetzt.

Ist eine Funktion nicht als "static" deklariert, bezeichnet man sie auch als Methode. Sie gehört dann zu einem Objekt und wird über eine Objektreferenz aufgerufen. Diese Objektreferenz wird (für den Programmierer verborgen) als impliziter Parameter übergeben, auf den über das Schlüsselwort "this" zugegriffen werden kann.

Antwort bewerten Vielen Dank für Deine Bewertung
public String getWasAuchImmer(){

return wasAuchImmer;
}

"return" ist einfach der Rückgabewert auf Deine Anfrage.
"Gib mir mal irgendwas!" - "Hier hast Du irgendwas!"

Im Unterschied dazu kann auch so sein, dass es gar nichts zurückzugeben gibt, sondern es nur etwas zu tun gibt. Dann kommt auch nichts ("void") zurück.

"Binde Dir die Schnürsenkel zu." - "".

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?