Lädt...

Methoden in Java

Schreibe eine Methode namens ring, die ein Wort druckt: ding. Lege diese Druckzeilen unter static void ring() mit leeren Klammern. In main schreibe nur ring(); — den Namen, dann leere Klammern, dann ein Semikolon. Kompiliere und starte. Der Bildschirm soll eine Zeile zeigen: ding. main hält das println für ding nicht. Die Methode hält es. Diese Trennung ist, was diese Seite lehrt.

Zeilen, die unter ring leben

Bisher saß der meiste Druck direkt in main. Das funktioniert weiter. Eine Methode gibt denselben Zeilen einen eigenen Namen. Du schreibst die Zeilen einmal unter diesem Namen. Dann holt main sie, indem es den Namen als Aufruf schreibt.
Lege eine kleine Programmdatei namens Chime.java an. Die public class in der ersten Zeile muss zum Dateinamen passen: public class Chime. Lass keinen älteren Pack- oder Skip-Klassennamen in dieser Datei; der Compiler erwartet, dass Klassenname und Dateiname übereinstimmen.
Außerhalb von main, noch innerhalb der Klassenklammern, schreibe:
static void ring() {
System.out.println("ding");
}
Das Wort static bleibt bei dieser Anfängerform, damit main ring ohne Objekt aufrufen kann. Das Wort void heißt: diese Methode gibt dem Aufrufer keinen Wert zurück — sie führt nur ihren Rumpf aus. Der Name ring ist die Marke, die du in main tippst. Die leeren Klammern () bedeuten: die Methode dieser Seite nimmt keine Werte herein. Die geschweiften Klammern halten den Rumpf. System.out.println("ding"); schreibt die vier Buchstaben d-i-n-g. Speichere die Datei, bevor du kompilierst.

Chime.java, das du kompilierst

Hier ist das vollständige kleine Programm für diese Seite. main hält nur den Aufruf. ring hält den Druck.

ring druckt ding

java
public class Chime {
    public static void main(String[] args) {
        ring();
    }

    static void ring() {
        System.out.println("ding");
    }
}

Aus dem Ordner, der Chime.java hält, starte javac Chime.java. Wenn runde Klammern, geschweifte Klammern und Semikolons passen, schreibt javac keine eigene Zeile. Dann starte java Chime — nicht java Chime.java. Lass die Endung .java beim zweiten Befehl weg. Dieselben zwei Befehle funktionieren unter Windows und unter macOS; diese Seite braucht keine andere Shell-Schreibweise für eines der Systeme. Das Programm soll eine Zeile drucken und stoppen: ding. Es soll dich nicht tippen lassen. Wenn das Terminal auf Tastatureingabe wartet, steckt noch ein nextLine-Aufruf aus einer älteren Übung in der Datei. Lösche diesen Aufruf und behalte ring(); in main plus die Methode ring oben. Eine falsche Bildschirmzeile heißt nicht, dass du JDK neu installieren musst.

Geh den Lauf einmal der Reihe nach durch. Java startet bei main. Die einzige Anweisung in main ist ring();. Dieser Aufruf springt in die Methode ring. In ring schreibt println ding. Dann ist ring fertig, und in main bleibt nichts übrig, also endet das Programm. Du hast System.out.println("ding"); auf dieser Seite nicht in main gelegt. Du hast es unter ring gelegt und per Namen angefordert. Zeigt der Bildschirm ding, hat der Aufruf den Rumpf erreicht. Bleibt der Bildschirm nach sauberem Kompilieren leer, hat main ring nie aufgerufen, oder main hält nur leere geschweifte Klammern ohne Aufruf darin.

ring aus main mehr als einmal aufrufen

Ändere nur main so, dass es dieselbe Methode zweimal aufruft:
public static void main(String[] args) {
ring();
ring();
}
Lass die Methode ring selbst in Ruhe. Kompiliere und starte erneut: javac Chime.java, dann java Chime. Der Bildschirm soll zwei Zeilen zeigen, jede mit ding. Der erste Aufruf führt den Rumpf einmal aus. Der zweite Aufruf führt denselben Rumpf noch einmal aus. Diese Wiederverwendung ist der Grund, die Zeilen zu benennen. Du hast println nicht ein zweites Mal unter ring kopiert. Du hast einen zweiten Aufruf in main geschrieben.
Nimmst du das zweite ring(); wieder heraus und lässt nur einen Aufruf, kehrt der Bildschirm zu einem einzelnen ding zurück. Die Methodendefinition druckt nicht von allein. Nur ein Aufruf aus main (oder später aus einer anderen Methode) führt den Rumpf aus. Eine Datei, die ring definiert, aber nie aus main aufruft, kann kompilieren und trotzdem einen leeren Bildschirm zeigen, wenn du java Chime startest, weil main nichts zu tun hat.

Teile eines Methodenkopfs

Auf dieser Seite lautet der Kopf static void ring(). Lies ihn von links nach rechts. static lässt main die Methode in dieser Anfängerform aufrufen. void heißt: über den Aufruf kommt kein Wert zurück. ring ist der Name. () sind absichtlich leer: diese Sitzung übergibt der Methode keine Wörter oder Zahlen. Die nächste Seite, parameters, setzt Namen in diese Klammern. Die Seite danach, return, ändert void, wenn du einen Wert zurück brauchst. Behalte beides für später. Heute reichen leere () und void.

📊 Kopfteil auf dieser Seite

Teil Auf dieser Seite
static main kann ring ohne Objekt aufrufen
void ring gibt keinen Wert zurück
ring der Name, den du im Aufruf tippst
() auf dieser Seite gehen keine Werte hinein
{ ... } der Rumpf, der ding druckt

Der Aufruf in main muss dem Namen genau entsprechen: ring(); mit kleinem r, leeren Klammern und einem Semikolon. Ring(); mit großem R ist für Java ein anderer Name. ring ohne () zu schreiben ist auf dieser Form kein Aufruf. System.out.println("ring"); zu schreiben druckt die vier Buchstaben des Wortes ring; es führt den Methodenkörper nicht aus. Behalte den Aufruf als ring(); wenn du ding auf dem Bildschirm willst.

Ein häufiger Rest ist eine alte Pack-for-each-Demo, die noch neben dem neuen Aufruf in main sitzt. Dann kann der Bildschirm 2, 4 und 6 oder red und blue statt ding zeigen — oder beide Arten von Zeilen gemischt. Räume main auf die ring();-Aufrufe auf, die diese Lektion braucht. Eine andere Verwechslung ist, die Methode in die Klammern von main zu stecken. Methoden auf dieser Seite sitzen in der Klasse, neben main, nicht verschachtelt in main. javac behandelt eine in main vergrabene Methode nicht als das ring, das du aufrufst. Schließe die Klammern von ring, bevor main endet, und die Klammern von main, bevor die Klasse endet, damit jeder Block nur seine eigenen Zeilen besitzt.

Bereit für die nächsten Seiten

Du kannst static void ring() schreiben, println-Zeilen in seine geschweiften Klammern legen und ring() aus main aufrufen, sodass der Bildschirm ding zeigt. Zweimal aufrufen druckt ding zweimal, ohne den Rumpf zu kopieren. Leere Klammern und void bleiben auf dieser Seite absichtlich. parameters werden Werte in die Klammern setzen. return wird einer Methode erlauben, eine Zahl oder Text an main zurückzugeben. Das sind die nächsten zwei Seiten nach dieser.

🧠 Testen Sie Ihr Wissen

Bereit zum Start

Testen Sie Ihr Wissen

Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen

❓
7
Fragen
🎯
70%
Zum Bestehen
♾️
∞
Zeit
🔄
∞
Versuche

📝 Anweisungen

  • Lesen Sie jede Frage sorgfältig
  • Wählen Sie die beste Antwort für jede Frage
  • Sie können das Quiz so oft wiederholen, wie Sie möchten
  • Ihr Fortschritt wird oben angezeigt