Parameter in Java
Schreibe eine Methode namens greet, die ein Wort entgegennimmt. In die Klammern schreibst du String name. Im Rumpf druckst du hi, ein Leerzeichen und dann name: System.out.println("hi " + name);. Aus main rufst du greet("lena"); auf. Der Bildschirm soll eine Zeile zeigen: hi lena. Die Buchstaben lena stehen nicht fest in der Methode. Sie kommen über den Aufruf und liegen für diesen Durchlauf im Namen name. Genau diese Übergabe lehrt diese Seite.
Ein Name in den Klammern
Auf der Methods-Seite blieben die Klammern nach ring leer. Der Druck war immer ding. Hier halten die Klammern einen typisierten Namen, damit jeder Aufruf einen anderen Wert senden kann. Dieser typisierte Name ist ein Parameter. Der Wert, den du im Aufruf schreibst, ist das Argument für diesen Durchlauf.
Lege eine kleine Programmdatei namens Tip.java an. Die public class in der ersten Zeile muss zum Dateinamen passen: public class Tip. Lass keinen alten Klassennamen wie Chime oder Pack in dieser Datei; der Compiler erwartet, dass Klassenname und Dateiname übereinstimmen.
Außerhalb von main, noch innerhalb der geschweiften Klammern der Klasse, schreibst du:
static void greet(String name) {
System.out.println("hi " + name);
}
Der Kopf beginnt auf dieser Anfängerform weiter mit static void. Zwischen den Klammern stehen zuerst String und dann name — zuerst der Typ, dann der Parametername. Der Rumpf nutzt name ohne Anführungszeichen darum, verbunden mit dem festen Text "hi " durch ein Plus. Anführungszeichen um "hi " markieren die festen Buchstaben. Der nackte Name markiert den Wert, der vom Aufruf kam. Speichere die Datei, bevor du übersetzt.
Tip.java mit greet
Das ist die Version, die du zuerst übersetzt. main hält den Aufruf mit einem Wert in den Klammern. greet hält den Druck, der diesen Wert nutzt.
public class Tip {
public static void main(String[] args) {
greet("lena");
}
static void greet(String name) {
System.out.println("hi " + name);
}
}
Aus dem Ordner, der Tip.java enthält, führst du javac Tip.java aus. Wenn runde Klammern, geschweifte Klammern und Semikolons passen, schreibt javac keine eigene Zeile. Dann führst du java Tip aus — nicht java Tip.java. Die Endung .java lässt du beim zweiten Befehl weg. Dieselben zwei Befehle gelten unter Windows und unter macOS; diese Seite braucht keine andere Shell-Schreibweise für eines der Systeme. Das Programm soll eine Zeile drucken und enden: hi lena. Es soll nicht auf deine Eingabe warten. Wenn das Terminal auf Tastatureingabe wartet, steckt noch ein nextLine-Aufruf aus einer älteren Übung in der Datei. Lösche diesen Aufruf und behalte greet("lena"); plus die greet-Methode oben. Eine falsche Bildschirmzeile bedeutet nicht, dass du JDK neu installieren musst.
Geh einen kompletten Lauf der Reihe nach durch. Java startet bei main. Der Aufruf greet("lena"); schickt den Text lena in den Parameter name. Innerhalb von greet baut println hi, ein Leerzeichen und dann diesen Wert — der Bildschirm zeigt hi lena. Dann endet greet und main endet. Du hast System.out.println("hi lena"); nicht in main geschrieben. Den festen Teil hast du einmal unter greet geschrieben und lena vom Aufruf geschickt.
Dieselbe Methode, andere Wörter
Ändere nur main so, dass greet zweimal mit zwei verschiedenen Argumenten aufgerufen wird:
public static void main(String[] args) {
greet("lena");
greet("sam");
}
Lass die Methode greet selbst in Ruhe. Übersetze und starte erneut: javac Tip.java, dann java Tip. Der Bildschirm soll zwei Zeilen zeigen: hi lena, dann hi sam. Der erste Aufruf füllt name mit lena. Der zweite Aufruf füllt name mit sam. Du hast println unter greet nicht kopiert. Du hast nur die Werte in den Aufrufen geändert.
Wenn du greet() mit leeren Klammern aufrufst, während der Kopf noch String name sagt, schreibt javac einen Fehler — der Aufruf muss einen String liefern. Wenn du ein altes ring(); mit leeren Klammern von der Chime-Seite im selben main lässt, passt dieser Aufruf nicht zu greet, und eine übrig gebliebene ring-Methode kann neben deinen hi-Zeilen noch ding drucken. Räume main auf die greet-Aufrufe, die diese Lektion braucht.
Eine ganze Zahl als Wert
Parameter sind nicht nur für Text. Schreibe eine zweite Methode, die ein int nimmt:
static void show(int n) {
System.out.println(n);
}
Rufe sie aus main mit ganzen Zahlen auf:
show(9);
show(4);
public class Tip {
public static void main(String[] args) {
show(9);
show(4);
}
static void show(int n) {
System.out.println(n);
}
}
Übersetze und starte: javac Tip.java, dann java Tip. Der Bildschirm soll zwei Zeilen zeigen: 9, dann 4. Um 9 oder 4 im Aufruf stehen keine Anführungszeichen — das sind int-Werte, kein Text. Innerhalb von show schreibt println(n) die Zahl, die angekommen ist. Wenn du diese zwei Zeilen gesehen hast, kannst du die greet-Demo wiederherstellen. Beide Versionen sind gültiges Java. Sie lehren dieselbe Idee: der Aufruf schickt einen Wert, der Parameter hält ihn für den Rumpf.
Lies den int-Lauf noch einmal. Der erste Aufruf setzt n auf 9 und druckt 9. Der zweite Aufruf setzt n auf 4 und druckt 4. Der Name n wird einmal im Kopf als int n deklariert. Jeder Aufruf gibt ihm für diesen Durchlauf einen neuen Wert. Ein zitiertes Wort in show zu übergeben, etwa show("nine");, passt bei dieser Form nicht zu int — javac schreibt einen Fehler. Eine nackte Zahl in greet zu übergeben, etwa greet(3);, passt nicht zu String — javac schreibt wieder einen Fehler. Passe den Argumenttyp an den Parametertyp an.
Ein häufiger Mix-up ist, den Parameternamen als Text zu drucken: System.out.println("name");. Das schreibt die Buchstaben n-a-m-e. Es schreibt nicht lena. Behalte println("hi " + name) ohne Anführungszeichen um name, wenn du die Buchstaben des Arguments auf dem Bildschirm willst. Ein anderer Mix-up ist, den Parameter in main statt im Methoden-Kopf zu deklarieren. Der typisierte Name gehört in greet(...) oder show(...), nicht in die Klammern von main auf dieser Seite. String[] args in main ist ein anderes Thema für eine spätere Sitzung; benenne args nicht in name um und erwarte nicht, dass greet es sieht.
Wo dich diese Seite lässt
Du kannst String name oder int n in die Klammern einer Methode setzen, einen passenden Wert im Aufruf übergeben und diesen Wert aus dem Rumpf drucken. Zwei Aufrufe mit zwei Argumenten drucken zwei verschiedene Zeilen, ohne die Methode zu kopieren. void bedeutet weiter, dass über den Aufruf nichts zurückkommt. Die nächste Seite ist return; dort gibt eine Methode einen Wert an main zurück, statt nur im Rumpf zu drucken.
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 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