1. Einführung
Beginnen wir mit der Frage: Warum sollte eine Methode überhaupt etwas zurückgeben? Warum kann man nicht einfach alles innerhalb der Methode erledigen und das Ergebnis auf den Bildschirm ausgeben?
Der Punkt ist: Oft müssen wir nicht nur eine Aktion ausführen, sondern ein Ergebnis erhalten, das später in anderen Teilen des Programms nützlich ist. Zum Beispiel:
- Eine Methode berechnet die Summe zweier Zahlen und gibt sie zurück, damit wir das Ergebnis für weitere Berechnungen verwenden können.
- Eine Methode stellt fest, ob eine Zahl gerade ist, und gibt true oder false zurück, damit wir eine Entscheidung treffen können.
- Eine Methode gibt einen Begrüßungstext für den Benutzer zurück, und wir entscheiden, wohin wir ihn geben – auf dem Bildschirm ausgeben, in eine Datei schreiben oder über das Netzwerk senden.
Wenn Methoden immer nur das Ergebnis ausgäben, wäre unser Programm starr an ein einziges Szenario gebunden und die Logik ließe sich nur schwer wiederverwenden. Ein Rückgabewert macht Methoden flexibel und universell.
Analogie
Stellen Sie sich einen Kaffeeautomaten vor. Sie werfen Geld ein, drücken eine Taste – und bekommen Kaffee. Wenn der Automat nur laut sagen würde „Der Kaffee ist fertig!“ (aber keinen Kaffee ausgeben würde), wären Sie nicht erfreut. Genauso mit Methoden: Man möchte nicht nur „Fertig!“ hören, sondern ein Ergebnis erhalten.
2. Rückgabetyp: Was kann eine Methode zurückgeben
In Java geben Sie beim Deklarieren einer Methode den Rückgabetyp an – das kann jeder Typ sein: int, double, String, boolean, ein Array oder sogar ein Objekt Ihrer eigenen Klasse. Wenn die Methode nichts zurückgibt, schreiben wir void.
Syntax:
return_type NameOfMethod(parameters)
{
// Methodenkörper
}
Beispiele:
int sum(int a, int b)
{
// gibt int zurück
}
String getGreeting(String name)
{
// gibt String zurück
}
boolean isEven(int number)
{
// gibt boolean zurück
}
void printHello()
{
// gibt nichts zurück - führt nur eine Aktion aus
}
Wichtig! Der Rückgabetyp ist das „Versprechen“ der Methode: Sie muss einen Wert dieses Typs zurückgeben. Wenn Sie versprochen haben, int zurückzugeben, aber einen String zurückgeben, ist der Compiler verärgert und lässt das Programm nicht kompilieren.
3. Der Operator return: Wie gibt man einen Wert aus einer Methode zurück
Um das Ergebnis der Methode tatsächlich „nach außen“ zu geben, wird der Operator return verwendet. Dieses Schlüsselwort sagt: „Hier, nimm das Ergebnis – und damit ist meine Arbeit beendet.“
int sum(int a, int b)
{
int result = a + b;
return result; // geben das Ergebnis zurück
}
Es geht auch kürzer:
int sum(int a, int b)
{
return a + b;
}
Wenn die Methode zur Zeile return gelangt, beendet sie die Ausführung, gibt den angegebenen Wert zurück und übergibt ihn an die Stelle, von der sie aufgerufen wurde.
Wichtig: Der Typ des Werts nach return muss mit dem deklarierten Typ der Methode übereinstimmen.
4. Verwendung des Rückgabewerts: Was macht man damit?
Wenn eine Methode einen Wert zurückgibt, können Sie:
- ihn in einer Variablen speichern. <
- ihn direkt in einem Ausdruck verwenden.
- ihn an eine andere Methode übergeben.
int result = sum(5, 7); // in einer Variablen speichern
System.out.println(result); // Ergebnis ausgeben
System.out.println(sum(10, 20)); // direkt ausgeben
if (isEven(42))
{
System.out.println("Die Zahl ist gerade!");
}
Beispiel: Methode, die einen String zurückgibt
String getGreeting(String name)
{
return "Hallo, " + name + "!";
}
// Verwendung:
String greeting = getGreeting("Alisa");
System.out.println(greeting); // Hallo, Alisa!
5. Praxis: Beispiele für Methoden mit Rückgabewert
Methode, die das Maximum aus zwei Zahlen zurückgibt
int max(int a, int b)
{
if (a > b)
{
return a;
}
else
{
return b;
}
}
Es geht sogar noch kürzer, wenn Sie bereits den ternären Operator beherrschen:
int max(int a, int b)
{
return (a > b) ? a : b;
}
Verwendung:
int maximum = max(10, 25);
System.out.println("Maximum: " + maximum); // Maximum: 25
Methode, die true zurückgibt, wenn die Zahl gerade ist
boolean isEven(int number)
{
return number % 2 == 0;
}
Verwendung:
if (isEven(18))
{
System.out.println("Die Zahl ist gerade!");
}
else
{
System.out.println("Die Zahl ist ungerade!");
}
Methode, die die Summe der Array-Elemente zurückgibt
int sumArray(int[] arr)
{
int sum = 0;
for (int i = 0; i < arr.length; i++)
{
sum += arr[i];
}
return sum;
}
Verwendung:
int[] grades = {5, 4, 3, 5, 4};
int total = sumArray(grades);
System.out.println("Summe der Noten: " + total);
6. Was passiert beim Aufruf einer Methode mit return
Wenn Sie eine Methode mit Rückgabewert aufrufen, „springt“ die Programmausführung sozusagen in die Methode hinein, führt deren Code aus, gelangt zu return, gibt den Wert zurück – und setzt ihn an die Aufrufstelle ein.
Schematisch:
int a = 2;
int b = 3;
int c = sum(a, b); // hier wird sum(2, 3) aufgerufen, 5 wird zurückgegeben, c wird 5
Flussdiagramm
graph TD
A["main"] --> B["sum(a, b)"]
B --> C[Berechnungen]
C --> D[return result]
D -->|Ergebnis wird zurückgegeben| A
7. Nützliche Feinheiten
return beendet die Ausführung der Methode
Sobald in einer Methode return auftritt, wird die Ausführung der Methode sofort beendet. Alles, was danach steht, wird nicht ausgeführt.
int test()
{
return 42;
System.out.println("Das wird nicht ausgegeben"); // unreachable
}
return in einer Methode mit dem Typ void
In einer void-Methode (die nichts zurückgibt) kann return ohne Wert verwendet werden – einfach um die Ausführung der Methode vorzeitig zu beenden, z. B. bei einer bestimmten Bedingung.
void printPositive(int number)
{
if (number <= 0)
{
System.out.println("Die Zahl ist nicht positiv!");
return; // wir verlassen die Methode einfach
}
System.out.println("Zahl: " + number);
}
8. Typische Fehler im Umgang mit return
Fehler Nr. 1: Nicht alle Pfade geben einen Wert zurück
int getSign(int number)
{
if (number > 0)
{
return 1;
}
// Und wenn number <= 0 ist? Kein return!
}
// Fehler: Nicht alle Zweige des Codes geben einen Wert zurück
So beheben Sie das: immer ein return in allen Ausführungspfaden vorsehen.
int getSign(int number)
{
if (number > 0)
{
return 1;
}
else if (number < 0)
{
return -1;
}
else
{
return 0;
}
}
Fehler Nr. 2: Falscher Rückgabetyp
int getNumber()
{
return "42"; // Fehler! Erwartet wurde int, nicht String
}
Fehler Nr. 3: return nach return
int test()
{
return 5;
System.out.println("Das wird nicht ausgeführt"); // unreachable statement
}
Fehler Nr. 4: return mit Ausdruck in einer void-Methode
void printSomething()
{
return 42; // Fehler! Eine void-Methode kann keinen Wert zurückgeben
}
Fehler Nr. 5: Rückgabewert wird ignoriert
sum(10, 20); // und das war's? Ergebnis ist weg!
Wenn Sie den Rückgabewert nicht verwenden, geht er einfach verloren. Vergessen Sie nicht, ihn zu speichern oder im Code weiterzugeben!
Fehler Nr. 6: Erwartung, dass return etwas ausgibt
int result = sum(2, 3);
// return gibt nichts aus!
// Sie müssen explizit ausgeben:
System.out.println(result);
GO TO FULL VERSION