Frage von Azasel, 49

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

Hallo Community,
In meinem Buch wird gerade mit return gearbeitet  und ich verstehe ganz und gar nicht, wie wichtig die Klasse bzw. wofür man diese braucht.

Z.B. String setter()
Es liefert einen Wert zurück ?
Was genau ist damit den gemeint.

Danke schonmal

Antwort
von NoHumanBeing, 24

"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
von gentlesea, 25

return ist keine Klasse, sondern eine Anweisung. Damit wird die aktuelle Methode verlassen. Sollte eher beim getter als beim setter eine Rolle spielen. return wert gibt den Wert an die aufrufende Methode zurück.

Siehe http://openbook.rheinwerk-verlag.de/javainsel/javainsel_02_007.html#dodtp93faef7...

Antwort
von zalto, 17
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." - "".

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten