Skip to main content

Methoden ohne Rückgabewert

Wir haben gesehen, dass wir mit Methoden mathematische Funktionen abbilden können. Berechnungen in Java sind aber nicht alle mathematischer Natur. Wir möchten nicht nur Werte berechnen, sondern auch Anweisungen, wie zum Beispiel System.out.println, nutzen, um etwas auf dem Bildschirm auszugeben.

Dies ist in Java ohne Problem möglich. Die folgende Methode ist zum Beispiel eine gültige Methode in Java:

public static int printAndReturnValue(int x) {
System.out.println("Der Wert von x ist " +x);
return x;
}

Manchmal möchten wir jedoch eine Methode nur wegen der Anweisung aufrufen und gar nichts berechnen. In diesem Fall können wir statt einen Datentyp als Rückgabewert anzugeben, das spezielle Schlüsselwort void verwenden. Dies zeigt an, dass eine Methode keinen Wert berechnet, sondern nur wegen der Aktion ausgeführt wird.

Dies ist in folgendem Beispiel gezeigt:

public static void printValue(int x) {
System.out.println("Der Wert von x ist " +x);
return;
}

Folgerichtig wird bei der return-Anweisung kein Wert angegeben. Es wäre in Java auch möglich, die return-Anweisung ganz wegzulassen.

Am Aufruf der Methode ändert sich nichts. Mit dem Aufruf printValue(42) können wir die Methode printValue mit dem Wert 42 aufrufen. Da die Methode nun aber keinen Wert zurückliefert, ist es natürlich auch nicht möglich mit dem Wert weiterzurechnen oder diesen einer Variablen zuzuweisen.

Anweisungen und Ausdrücke

Wir haben in einer früheren Theorieeinheit zwischen zwei Arten von Instruktionen unterschieden: Anweisungen und Ausdrücke. Der Aufruf einer void-Methode entspricht einer Anweisung. Es wird kein Wert produziert, sondern der Aufruf wird nur wegen der in der Methode enthaltenen Anweisungen ausgeführt. Im Gegensatz dazu entspricht der Aufruf einer Methode mit einem Rückgabetyp ausser void einem Ausdruck. Wir erhalten einen Wert, mit dem wir im Programm weiterrechnen können.

In einigen anderen Programmiersprachen wird strikt zwischen Methoden, die Anweisungen ausführen, und Methoden, die nur einen Wert berechnen, unterschieden. In Java wird diese Trennung nicht gemacht. Wir dürfen in einer Methode beliebige Anweisungen ausführen und am Ende einen berechneten Wert zurückgeben. So könnten wir zum Beispiel eine Methode schreiben, die den Sinus einer Zahl berechnet und zurückgibt, aber gleichzeitig auch noch einen Text auf dem Bildschirm ausgibt. Wir sollten uns aber vor dem Schreiben einer Methode immer überlegen, ob wir an dem Resultat einer Berechnung interessiert sind, oder ob wir die Methode wegen eines Effektes einer Anweisung schreiben und versuchen, diese Aspekte nicht zu mischen. Ansonsten werden die Programme später schwierig zu verstehen.

Experimente

  • Rufen Sie die Methode sayHello auf.
  • Können sie das Resultat der Methode einer Variablen zuweisen?
  • Schreiben Sie eine eigene void-Methode, welche zwei Ganzzahlen als Argumente entgegennimmt und die Summe der Zahlen berechnet.
  • Können Sie die Summe dem aufrufenden Programm zurückgeben?

Haben Sie Fragen oder Bemerkungen? Schreiben Sie diese doch ins Forum.