Heute werden wir in Java Methoden genauer unter die Lupe nehmen. Du wirst zuerst lernen, was eine Methode ist, da es sich dabei um ein unfassbar wichtiges Programmierkonzept handelt. Denn ohne Methoden würde jegliche Struktur in unseren Programmen fehlen. Anschließend werden wir uns in diesem Beitrag Methoden ohne Rückgabewert in der Praxis ansehen und uns im kommenden Blogartikel dann mit den Methoden mit Rückgabewert befassen. Was das alles zu bedeuten hat, erfährst du gleich.
Inhaltsverzeichnis
1. Was ist eine Methode?
Eine Methode ist ein Stück vorprogrammierter Code, den wir immer wieder ausführen können, ohne ihn neu schreiben zu müssen. Jedes Mal, wenn wir diese Methode dann in der Main-Methode aufrufen, wird deren Code ausgeführt und anschließend geht es ganz normal im Programm weiter.
Da das vermutlich noch etwas abstrakt klingt, werden wir uns jetzt eine eigene Methode programmieren. In unserem Programm sehen wir direkt zu Beginn die Main-Methode. Und wie man bereits herauslesen kann, handelt es sich auch bei dieser um eine Methode! Dazu kommen wir später noch zu sprechen.
2. In Java Methoden definieren
Wichtig ist, dass wir unsere eigene Methode nicht in der Main-Methode, sondern unterhalb ihres Codeblocks definieren. Dazu schreiben wir erst mal folgendes:
public static void main(String[] args) {
}
public static void
Auf diese drei Begriffe komme ich gleich noch zu sprechen. Jetzt müssen wir uns einen Namen für unsere Methode überlegen.
Genau wie Variablen haben nämlich auch in Java Methoden Bezeichner, über die wir sie ansprechen können.
Für unser Beispiel werde ich unsere Methode einfach mal „doSomething“ nennen. Nach dem Bezeichner folgt ein leeres rundes Klammerpaar und anschließend geschweifte Klammern, die einen neuen Block bilden.
In diesen Block können wir ab sofort den Code schreiben, den wir ausführen lassen möchten, wenn wir die Methode doSomething in unserem Programm aufrufen.
public static void doSomething() {
}
Um das Ganze zu veranschaulichen, schreiben wir darin jetzt ein kleines Programm.
Dafür legen wir eine Variable vom Typ Integer an, nennen diese x und speichern darin den Wert 10. Danach erstellen wir eine weitere Variable namens y, der wir den Wert 20 zuweisen. Unter dieser deklarieren wir noch die Variable „result“, in der wir das Ergebnis von x + y speichern werden. Abschließend lassen wir uns dieses auf der Konsole ausgeben:
public static void doSomething() {
int x = 10;
int y = 20;
int result = x + y;
System.out.println(result);
}
Wenn wir das Programm so ausführen, sehen wir, dass erst mal gar nichts passiert. Das liegt daran, dass wir diese Methode zwar definiert, aber noch nirgendwo aufgerufen haben.
3. Wie ruft man eine Methode auf?
Wir bewegen uns also in die Main-Methode und rufen unsere eigene Methode dort auf. Vorher und nachher werden wir jeweils testweise eine println-Methode ausgeben lassen, damit wir unsere selbst definierte Methode sauber auf der Konsole sehen können:
public static void main(String[] args) {
System.out.println("Vor dem Methodenaufruf!");
System.out.println("Nach dem Methodenaufruf!");
}
Zwischen den beiden println-Methoden rufen wir jetzt doSomething auf. Das funktioniert denkbar einfach, indem wir folgendes schreiben:
public static void main(String[] args) {
System.out.println("Vor dem Methodenaufruf!");
doSomething();
System.out.println("Nach dem Methodenaufruf!");
}
Wenn wir das Programm nun erneut ausführen, sehen wir unsere doSomething-Methode in Aktion:
4. So funktioniert unsere Methode
Zunächst gibt uns das Programm „Vor dem Methodenaufruf!“ aus. Dann ruft es die doSomething-Methode auf und arbeitet deren Codeblock von oben nach unten ab.
Dabei wird uns result, also das Ergebnis aus 10 plus 20 ausgegeben, was die Zahl 30 in der Konsole erklärt.
Sobald unsere Methode vollständig abgearbeitet ist, steuert das Programm zurück in die Main-Methode und setzt seine Arbeit unter doSomething() im Code fort.
Dort gibt es noch den String „Nach dem Methodenaufruf!“ aus. Wie man sieht, ist das Ganze gar nicht so schwierig.
5. Der Aufbau von Java Methoden
An dieser Stelle gehen wir mal auf den Aufbau einer Methode ein. In der ersten Zeile sehen wir den Methodenkopf:
public static void doSomething() {
int x = 10;
int y = 20;
int result = x + y;
System.out.println(result);
}
Darunter befindet sich der Methodenblock:
public static void doSomething() {
int x = 10;
int y = 20;
int result = x + y;
System.out.println(result);
}
Der Methodenblock ist mittlerweile selbsterklärend. Genau wie bei einer if-Anweisung führt das Programm beim Aufruf der Methode den Code aus, der in diesem Block geschrieben steht.
Beim Methodenkopf hingegen wird es schon etwas interessanter. Hier gibt es nämlich drei besondere Schlüsselwörter: public, static und void.
Die beiden Schlüsselwörter „public“ und „static“ beziehen sich auf die Objektorientierung. Da wir beim Thema Objektorientierung allerdings noch nicht angekommen sind, macht es an dieser Stelle wenig Sinn, public und static zu erklären. Wir werden darauf aber natürlich noch innerhalb dieser Tutorial-Reihe in einem gesonderten Blogbeitrag eingehen.
Bis dahin reicht es zu wissen, dass du zu Beginn der Methodendefinition immer public static void angibst.
6. Das Schlüsselwort void
„void“ steht für den Rückgabetyp. Vor den Bezeichner einer Methode schreiben wir den Rückgabewert, welcher einen Datentyp darstellt. So wie es bei Variablen auch der Fall ist.
Wenn wir möchten, dass diese Methode nichts zurückgibt, verwenden wir void.
Der nächste Beitrag wird in Java Methoden mit Rückgabewert behandeln. Bei diesem werden wir das Schlüsselwort void durch einen richtigen Datentyp ersetzen und einen Wert zurückgeben.
Im heutigen Blogartikel behandeln wir lediglich void, welches erkennen lässt, dass eine Methode nichts zurückgibt. Was das genau bedeutet, wird im nächsten Beitrag noch deutlich werden.
7. Alltägliche Methoden
Auch wenn es dir bisher womöglich nicht bewusst gewesen ist, verwenden wir bereits durchgehend in Java Methoden. Zum einen die besondere Main-Methode, welche den Programmablauf steuert und diesen damit vorgibt. Bei dieser Methode handelt es sich aber um einen Sonderfall, auf den wir hier nicht näher eingehen werden.
Du kennst allerdings auch bereits ganz normale Methoden, wie beispielsweise println. Diese haben wir in unserem bisherigen Programm schon zweimal eingesetzt.
Beim Aufrufen von println öffnen wir ein Klammerpaar, wodurch wir erkennen, dass es sich ganz klar um eine Methode handelt. Das „System.out.“ vor println gehört wieder zum Thema Objektorientierung. Warum wir diese beiden Wörter benötigen, wirst du später erfahren.
Hier werden wir uns erst mal ausschließlich auf den Methodenaufruf println() konzentrieren. Der einzige Unterschied, den wir dabei zu unserer selbst definierten Methode haben, ist der, dass wir in die runden Klammern noch etwas hineinschreiben. Nämlich einen sogenannten Parameter.
8. Wofür benötigt man Parameter?
Die println-Methode wurde in einer bestimmten Bibliothek definiert und ist damit automatisch in unser Programm eingebunden. Aus diesem Grund können wir sie problemlos aufrufen.
Zum Zeitpunkt, als diese Methode programmiert wurde, konnte der Programmierer natürlich noch nicht wissen, was wir auf der Konsole konkret ausgeben möchten. Genau deshalb gibt es Parameter.
So können wir in unserem Programm einfach einen Parameter mitgeben, der dann intern im Code der println-Methode verwertet wird. In unserem Fall ist der Parameter der String „nach dem Methodenaufruf!“, welchen das Programm dank dieser Methode auf der Konsole ausgibt.
Darüber hinaus können wir auch für unsere eigens definierte Methode Parameter festlegen, die wir anschließend mitgeben. Genau das werden wir jetzt umsetzen.
Wir wissen, dass wir in unserer Methode doSomething zwei Zahlen zusammenrechnen lassen möchten. Das können wir auf dem folgenden Weg beispielhaft mit den Zahlen 20 und 20 realisieren:
public static void main(String[] args) {
System.out.println("Vor dem Methodenaufruf!");
doSomething(20, 20);
System.out.println("Nach dem Methodenaufruf!");
}
Jetzt zeigt uns das Programm allerdings eine Fehlermeldung an, was wir an der rot gepunkteten Linie unterhalb unseres Methodennamens erkennen:
Das liegt daran, dass diese Methode bisher noch so definiert ist, dass keine Parameter darin erwartet werden:
public static void doSomething() {
Wir möchten allerdings Parameter übergeben und das funktioniert selbstverständlich nicht. Das heißt, wir müssen in unserer Methodendefinition auch noch festlegen, welche Parameter in welcher Reihenfolge das Programm zu erwarten hat und das funktioniert wie folgt.
9. So gibt man Parameter in der Methodendefinition an
Wir geben zuerst den Datentyp an und danach einen x-beliebigen Namen. Dieser soll beispielhaft number1 sein und direkt im Anschluss legen wir noch getrennt durch ein Komma einen zweiten Parameter fest. Dieser Parameter soll auch wieder vom Typ Integer sein und number2 heißen.
public static void doSomething(int number1, int number2) {
Jetzt sehen wir auch schon, dass die Fehlermeldung verschwunden ist, weil wir definiert haben, dass zwei Integerwerte erwartet werden und wir diese im Methodenaufruf bereits übergeben.
Wenn wir andersherum die Werte innerhalb des Methodenaufrufs löschen, erhalten wir ebenfalls eine Fehlermeldung:
Das liegt daran, dass wir die Methode ohne Parameter nicht mehr aufrufen können, weil das Programm die beiden Werte zwingend erwartet.
Wenn du dich also dafür entscheidest, musst du sie auch übergeben.
Wir ergänzen dementsprechend wieder die Zahlen 20 und 20 und können dann mit den Bezeichnern, die wir im Kopf der Methodendefinition festgelegt haben, innerhalb der Methode arbeiten.
Das heißt, wir weisen der Variable x nicht den Wert 10 zu, sondern number1 und für die Variable y legen wir nicht den Wert 20 fest, sondern number2:
public static void doSomething() {
int x = number1;
int y = number2;
int result = x + y;
System.out.println(result);
}
10. Funktionsweise einer Methode mit Parametern
Wir rufen die Methode auf und übergeben dabei die Werte 20 und 20. Jetzt lädt das Programm die erste 20 in die Variable number1 und die zweite 20 in die Variable number2.
Nun sehen wir, dass number1 an x übergeben wird und number2 an y. Diese Variablen rechnet das Programm dann zusammen und gibt sie aus. Wenn wir das Programm an dieser Stelle ausführen, sollten wir also die Zahl 40 in der Konsole sehen:
Bei den Parametern hat man die Möglichkeit, eine beliebige Anzahl zu übergeben. Man kann also entweder keinen, einen, zwei oder auch hunderte Parameter angeben.
Wichtig ist, sowohl den Datentyp als auch den Bezeichner festzulegen, mit dem man anschließend intern in der Methode arbeiten kann.
Beim Aufrufen der Methode übergibt man die konkreten Werte in der Reihenfolge, in der man sie auch definiert hat.
Das ist im Grunde alles, was du zu den Java Methoden aktuell wissen solltest. Im nächsten Beitrag wirst du lernen, was es mit dem Rückgabetyp auf sich hat.