Methoden und Parameter in Java

java methoden schreiben

Wer in Java Methoden schreiben will, legt zuerst den Methodenkopf fest: Rückgabetyp, Name und Parameterliste. Der Rumpf erledigt die Aufgabe, return liefert das Ergebnis, und void steht für eine Methode ohne Ergebnis.

Wo Methoden im Lernweg stehen, zeigt die Übersicht zum Thema java lernen schule. Der Artikel zerlegt eine Methode in ihre Bestandteile und überträgt sie auf typische Schulaufgaben.

Aufbau einer Methode: Kopf, Parameter und Rückgabe

Eine Methode ist ein benannter Block von Anweisungen, den ein Programm beliebig oft unter diesem Namen aufruft. Sie besteht aus dem Methodenkopf und dem Rumpf in geschweiften Klammern. Wer diese Teile getrennt betrachtet, versteht auch fremde Methoden schneller.

Der Methodenkopf

Der Kopf beschreibt von außen, was die Methode tut: Er nennt den Typ des Ergebnisses, den Namen und in runden Klammern die Parameterliste. Ein Beispiel für einen Kopf ist public static int groesser(int a, int b). Daraus lässt sich ablesen, dass die Methode groesser heißt, zwei Ganzzahlen entgegennimmt und eine Ganzzahl zurückgibt. Wer den Kopf lesen kann, muss den Rumpf zum Aufrufen nicht kennen.

Der Name verlangt Sorgfalt, denn Java unterscheidet bei Bezeichnern streng zwischen Groß- und Kleinschreibung, wie das Java-Buch auf dem Server der Universität Düsseldorf festhält. groesser und Groesser bezeichnen also verschiedene Methoden. Beim Layout setzt dasselbe Buch die geschweiften Klammern von Klassen- und Methodendefinitionen unterhalb der Deklarationszeile. In der Schule empfiehlt es sich, einen Stil festzulegen und ihn konsequent zu verwenden, weil der Rumpf dadurch auf einen Blick erkennbar bleibt.

Parameter und Argument

Ein Parameter ist die im Methodenkopf deklarierte Variable, also der Platzhalter mit Typ und Name. Ein Argument ist der konkrete Wert, den der Aufrufer beim Aufruf einsetzt. Im Kopf groesser(int a, int b) sind a und b Parameter. Beim Aufruf groesser(x, y) sind x und y die Argumente. Im Unterricht werden beide Wörter oft vermischt. Die Unterscheidung hilft aber, Fehlermeldungen zu lesen: Meldet der Compiler eine falsche Argumentliste, passt der Aufruf nicht zum Kopf.

Ein bekanntes Beispiel sind System.out.println und System.out.print. Laut Java-Buch erwarten beide Methoden ein einziges Argument, das von beliebigem Typ sein kann. Ein Argument darf also auch ein zusammengesetzter Ausdruck sein.

Der Rückgabewert

Der Rückgabewert ist das Ergebnis, das die Methode an die aufrufende Stelle zurückgibt. Sein Typ steht im Kopf vor dem Namen, im Rumpf beendet return die Methode und liefert den Wert. Ein vertrautes Beispiel ist das Einlesen einer Zeile: Das Ergebnis von readLine ist laut Java-Buch ein String mit dem Inhalt der Eingabezeile. Wer daraus eine Zahl braucht, muss den String weiterverarbeiten, denn der Typ des Rückgabewerts lässt sich nicht umdeuten. Ein zurückgegebener Wert wirkt nur, wenn der Aufrufer ihn in einer Variablen speichert oder direkt weiterverwendet.

Stimmungsbild zum Tippen von Quelltext: Auf der Tastatur ist kein Code zu sehen, entscheidend ist der Ablauf Kopf, Rumpf, Aufruf.

Eine Methode Schritt für Schritt schreiben

Am sichersten ist es, den Kopf vor dem Rumpf zu entwerfen. Das gilt für Klassenarbeiten ebenso wie für eigene Projekte, denn so ist die Schnittstelle geklärt, bevor Details stören.

  1. Aufgabe in einem Satz formulieren. „Bestimme die größere von zwei Zahlen“ ergibt einen klaren Auftrag und einen sprechenden Namen.
  2. Eingaben als Parameter festlegen. Alles, was die Methode von außen braucht, wird ein Parameter mit Typ und Namen. Was sie selbst berechnen kann, gehört nicht in die Liste.
  3. Ergebnistyp wählen. Liefert die Methode einen Wert, steht dessen Typ im Kopf. Gibt sie nur etwas aus oder verändert etwas, steht dort void.
  4. Rumpf schreiben. Er enthält die Anweisungen und bei einem Rückgabetyp ein return mit passendem Wert.
  5. Aufruf prüfen. In main wird die Methode mit passenden Argumenten aufgerufen. Das Ergebnis wird ausgegeben, damit man den Test sieht.

In kleinen Programmen mit einer main-Methode stehen Hilfsmethoden meist daneben und sind mit static gekennzeichnet, damit main sie direkt aufrufen kann.

void-Methode oder Methode mit Rückgabe

Die Wahl hängt davon ab, ob der Aufrufer ein Ergebnis weiterverwenden soll. Eine void-Methode führt eine Tätigkeit aus, etwa eine Begrüßung oder eine Tabelle auszugeben, und gibt nichts zurück. Eine Methode mit Rückgabetyp berechnet etwas und überlässt dem Aufrufer, was damit geschieht.

Tastatur mit rot beleuchteten Tasten W, A, S und D: Bei der Fehlersuche liegt die Ursache oft in einem einzelnen getippten Buchstaben, etwa in der Groß- und Kleinschreibung.
  • void für Ausgabe und Zustandsänderung. Eine Methode begruessen(String name) schreibt einen Text auf den Bildschirm. Der Aufruf steht allein in einer Zeile, ein Ergebnis gibt es nicht.
  • Rückgabe für Berechnungen. Eine Methode istGerade(int zahl) mit dem Rückgabetyp boolean liefert Wahr oder Falsch. Der Aufrufer nutzt das Ergebnis in einer Bedingung.
  • Rechnen und Ausgeben trennen. Eine Methode, die rechnet, gibt besser den Wert zurück, statt ihn selbst auszugeben. So lässt sie sich in mehreren Aufgaben wiederverwenden und einzeln testen.

Bei Aufgaben zum Rückgabewert prüft man deshalb zuerst, ob jeder Programmpfad ein passendes return erreicht. Dazu zählen auch Zweige einer Verzweigung, die man leicht vergisst.

Parameterübergabe in Java

Beim Aufruf wertet Java die Argumente aus und stellt sie der Methode über ihre Parameter zur Verfügung. Ein Argument ist deshalb nicht auf eine einzelne Variable beschränkt, es darf auch ein Ausdruck sein. Genau hier lauert ein bekannter Stolperstein bei Ausgaben mit println.

Das Java-Buch zeigt, dass der Ausdruck “1+2=” + 1 + 2 ohne Klammern den Text 1+2=12 statt 1+2=3 ausgibt. Der Compiler sieht dann auch das zweite Plus als String-Verkettungsoperator an. Erst die Klammern um die Summe erzwingen, dass zuerst gerechnet und dann verkettet wird. Wer Ausdrücke als Argumente übergibt, sollte die Reihenfolge der Auswertung deshalb mit Klammern eindeutig machen.

Hinzu kommt der Typ: Parameter sind typisiert, und ein Argument muss zum deklarierten Typ passen. Ein String aus readLine lässt sich nicht einfach an einen int-Parameter übergeben, er muss vorher umgewandelt werden.

Methoden überladen

Überladen bedeutet, mehrere Methoden mit gleichem Namen, aber unterschiedlicher Parameterliste in derselben Klasse zu schreiben. Welche Variante läuft, entscheidet Java beim Aufruf anhand der übergebenen Argumente. Man kennt das Prinzip von println: ein Name, Argumente beliebigen Typs.

Sinnvoll ist das Überladen, wenn dieselbe Tätigkeit mit verschiedenen Eingaben gemeint ist, zum Beispiel ein Maximum für Ganzzahlen und eine gleichnamige Methode für Kommazahlen. Wer dagegen Methoden mit verschiedener Aufgabe gleich benennt, macht den Code unlesbar. In diesem Fall sind eigene, sprechende Namen die bessere Wahl. Die Unterscheidung muss in der Parameterliste liegen, also in Anzahl, Typ oder Reihenfolge der Parameter. Ein anderer Rückgabetyp allein reicht nicht aus.

Ein Programm in Methoden gliedern

Aufgaben aus dem Unterricht folgen oft dem Muster Eingabe, Verarbeitung, Ausgabe. Jede dieser Phasen eignet sich als eigene Methode, und main ruft sie nur noch nacheinander auf. Das Programm wird dadurch lesbar, weil main wie ein Inhaltsverzeichnis wirkt.

  • Eingabe als Methode mit Rückgabe. Eine Methode liest eine Zeile ein und liefert den String zurück.
  • Verarbeitung als Methode mit Parametern. Sie bekommt die Werte übergeben und gibt das Ergebnis zurück, ohne selbst etwas auszugeben.
  • Ausgabe als void-Methode. Sie bekommt das Ergebnis als Argument und formatiert den Text.
  • Wiederkehrende Abläufe auslagern. Steckt dieselbe Schleife an mehreren Stellen, gehört sie in eine Methode. Wie Schleifen aufgebaut sind, erklärt der Beitrag java schleifen erklärt.
Quelltext in einem hellen Editor: Der Code ist zu klein, um einzelne Methodennamen zu lesen, das Bild steht nur für das Arbeiten am Programm.

Wenn Methoden später zu Objekten gehören, wird aus der Hilfsmethode eine Eigenschaft der Klasse. Wie das aussieht, zeigt der Beitrag zur objektorientierte programmierung java schule. Wer Parameter und Rückgabe sicher beherrscht, hat dafür die wichtigste Grundlage.

Typische Fehler beim Schreiben von Methoden

Die meisten Fehler entstehen an der Schnittstelle zwischen Kopf und Aufruf, nicht im Rumpf. Wer sie kennt, findet sie schnell.

  • Falsche Schreibweise. Weil Bezeichner in Java zwischen Groß- und Kleinschreibung unterscheiden, findet der Compiler eine Methode mit abweichender Schreibweise nicht.
  • Rückgabe ignoriert. Der Aufruf einer Methode mit Rückgabe steht allein in einer Zeile, das Ergebnis geht verloren.
  • Typ passt nicht. Ein String wird an einen Zahlenparameter übergeben, oder ein Ergebnis wird einem Variablentyp zugewiesen, der nicht dazu passt.
  • Ausgabe statt Rückgabe. Die Methode druckt das Ergebnis aus, obwohl der Aufrufer es weiterverwenden soll.
  • Klammern vergessen. Wie das Beispiel 1+2=12 zeigt, ändert fehlende Klammersetzung bei Verkettungen das Ergebnis.

Frequently asked questions

Kann println Argumente jedes Typs annehmen?

Ja. Laut Java-Buch erwarten println und print jeweils ein einziges Argument, das von beliebigem Typ sein kann.

Muss eine void-Methode ein return enthalten?

Nein. Eine void-Methode endet am Ende des Rumpfs von selbst. Ein return ohne Wert ist nur nötig, wenn sie früher abbrechen soll.

Sind groesser und Groesser dieselbe Methode?

Nein. Java unterscheidet bei Bezeichnern streng zwischen Groß- und Kleinschreibung, deshalb sind das zwei verschiedene Namen.

Reicht ein anderer Rückgabetyp zum Überladen?

Nein. Die Parameterlisten müssen sich unterscheiden, entweder in Anzahl, Typ oder Reihenfolge der Parameter.