Java Main Methode: public static void main einfach erklärt
Einfache Erklärung der Java Main Methode für Azubis, Studenten und Berufseinsteiger. Verstehen Sie public static void main Schritt für Schritt.
By Marcel Schmidtpeter 30 Jul 2026
Du sitzt vor deinem ersten Java-Programm. Dein Dozent hat gesagt: "Schreibt mal ein Hello World." Du tippst los - und dann steht da plötzlich `public static void main(String[] args)`. Genau diese Zeile verwirrt fast jeden Anfänger. Dabei ist die Java Main Methode (also die Hauptmethode) der Einstiegspunkt jedes Java-Programms. Ohne sie startet nichts. Dieser Artikel knackt diese Zeile auf - Stück für Stück.
Was ist die Java Main Methode?
Die Java Main Methode ist der Startpunkt jeder ausführbaren Java-Anwendung. Wenn du ein Programm startest, sucht die Java Virtual Machine (JVM, die Laufzeitumgebung für Java) exakt nach dieser Methode. Fehlt sie oder ist sie falsch geschrieben, gibt es eine Fehlermeldung - und dein Programm läuft nicht.
Stell dir vor, dein Programm ist ein Buch. Die Main Methode ist das erste Kapitel. Ohne dieses Kapitel weiß der Leser nicht, wo er anfangen soll. Genau so geht es der JVM.
Technisch gesehen ist sie eine ganz normale Methode mit einer speziellen Signatur. Die offizielle Spezifikation von Oracle legt genau fest, wie sie aussehen muss. Nur so kann die JVM sie finden und ausführen.
Was bedeutet jedes Wort in public static void main?
Die Signatur `public static void main(String[] args)` besteht aus fünf Teilen. Jeder Teil hat eine bestimmte Aufgabe. Hier ist der Überblick:
Bestandteil | Bedeutung | Warum nötig? |
`public` | Von überall aufrufbar | Die JVM muss von außen zugreifen können |
`static` | An keine Instanz gebunden | Beim Start gibt es noch kein Objekt |
`void` | Gibt nichts zurück | Startpunkt liefert keinen Wert |
`main` | Name der Methode | Die JVM sucht exakt diesen Namen |
`String[] args` | Parameter für Kommandozeilenargumente | Übergabe von Werten beim Programmstart |
Merke: Die JVM ist beim Programmstart sehr streng. Nur `public static void main(String[] args)` wird als Einstiegspunkt erkannt. Jede Abweichung führt zu einem Fehler.
Was bedeutet public?
Public bedeutet: Diese Methode ist von überall her sichtbar und aufrufbar. In Java gibt es sogenannte Zugriffsmodifizierer (Access Modifier) - das sind Schlüsselwörter, die regeln, wer auf eine Methode oder Variable zugreifen darf.
Warum muss `main` public sein? Ganz einfach: Die JVM, die dein Programm startet, ist außerhalb deiner Klasse. Sie hat keine speziellen Rechte. Ohne `public` dürfte sie die Methode nicht aufrufen - und dein Programm würde nicht starten.
// Richtig: Die JVM kann die Methode aufrufen
public static void main(String[] args) {
System.out.println("Programm startet");
}
// Falsch: Die JVM findet keinen Einstiegspunkt
private static void main(String[] args) {
System.out.println("Das wird nie ausgefuehrt");
}Was bedeutet static?
Static bedeutet: Die Methode gehört zur Klasse selbst, nicht zu einem einzelnen Objekt. Normalerweise musst du erst ein Objekt einer Klasse erstellen, bevor du deren Methoden aufrufen kannst. Bei `static` Methoden geht das direkt über den Klassennamen.
Stell dir vor, du willst ein Auto starten. Normalerweise musst du erst ein Auto besitzen, bevor du es starten kannst. Aber die Main Methode ist wie der Zündschlüssel - er muss funktionieren, bevor das Auto existiert.
Warum ist das nötig? Wenn dein Programm startet, existiert noch kein einziges Objekt. Die JVM müsste erst ein Objekt deiner Klasse erstellen, um die Main Methode aufzurufen. Aber welches Objekt? Das ist ein Henne-Ei-Problem. Static löst das - die Methode existiert ohne Objekt.
Was bedeutet void?
Void ist der Rückgabetyp (Return Type) der Methode. Er sagt: Diese Methode gibt keinen Wert zurück. Andere Methoden können zum Beispiel `int` oder `String` zurückgeben. Die Main Methode gibt nichts zurück - sie beendet einfach das Programm.
Warum? Weil die Main Methode das Ende der Ausführung ist. Es gibt niemanden, der den Rückgabewert empfangen würde. Wenn du Fehlercodes oder Statusmeldungen zurückgeben willst, nutzt du `System.exit(1)` statt eines Rückgabewerts. In Sprachen wie C++ ist das anders, aber in Java ist `void` Pflicht.
Was bedeutet String[] args?
`String[] args` ist ein Parameter (eine Übergabevariable). Dabei ist `String[]` ein Array (also eine Liste) von Zeichenketten, und `args` ist einfach der Name - Abkürzung für "arguments" (Argumente).
Damit kannst du Werte beim Programmstart übergeben. Stell dir vor, du startest dein Programm über die Kommandozeile:
java MeinProgramm Max 25 BerlinDann enthält `args` diese drei Werte:
`args[0]` = "Max"
`args[1]` = "25"
`args[2]` = "Berlin"
Hier ein komplettes Beispiel:
public class Begruessung {
public static void main(String[] args) {
if (args.length > 0) {
System.out.println("Hallo " + args[0] + "!");
} else {
System.out.println("Hallo Unbekannter!");
}
}
}Du findest mehr zu Arrays in unserem Artikel über Java Arrays oder bei W3Schools.
Wie startet man ein Programm mit Argumenten?
In der Entwicklungsumgebung (IDE) wie IntelliJ oder Eclipse klickst du meist einfach auf "Run". Aber wo trägst du die Argumente ein?
Meistens musst du die "Run Configuration" öffnen. Dort gibt es ein Feld namens "Program arguments". Dort trägst du die Werte einfach durch Leerzeichen getrennt ein. Das ist praktisch zum Testen, aber in der echten Welt (auf einem Server) werden diese Argumente oft direkt in Skripten übergeben.
Warum heißt die Methode genau "main"?
Der Name `main` ist eine Konvention aus der Programmierung. Er stammt aus der Sprache C und wurde in Java übernommen. Die JVM sucht beim Programmstart exakt nach einer Methode mit diesem Namen. Groß- und Kleinschreibung ist dabei extrem wichtig.
// Falsch: Gross-/Kleinschreibung beachten!
public static void Main(String[] args) {} // JVM findet das nicht
// Falsch: Anderer Name
public static void start(String[] args) {} // JVM findet das auch nicht
// Richtig: Exakt diese Schreibweise
public static void main(String[] args) {}Wie sieht ein komplettes Java-Programm aus?
Hier ist ein vollständiges Beispiel, das alles zusammenbringt. Es zeigt, wie du die Main Methode nutzt und mit Kommandozeilenargumenten arbeitest.
public class Taschenrechner {
public static void main(String[] args) {
// Pruefen, ob genau 3 Argumente uebergeben wurden
if (args.length != 3) {
System.out.println(
"Nutzung: java Taschenrechner <Zahl1> <Operator> <Zahl2>"
);
System.out.println("Beispiel: java Taschenrechner 5 + 3");
return;
}
// Argumente einlesen
double zahl1 = Double.parseDouble(args[0]);
String operator = args[1];
double zahl2 = Double.parseDouble(args[2]);
double ergebnis = 0;
// Berechnung durchfuehren
switch (operator) {
case "+":
ergebnis = zahl1 + zahl2;
break;
case "-":
ergebnis = zahl1 - zahl2;
break;
case "*":
ergebnis = zahl1 * zahl2;
break;
case "/":
if (zahl2 != 0) {
ergebnis = zahl1 / zahl2;
} else {
System.out.println("Fehler: Division durch Null!");
return;
}
break;
default:
System.out.println("Unbekannter Operator: " + operator);
return;
}
System.out.println("Ergebnis: " + ergebnis);
}
}Aufgerufen wird das Ganze dann so:
javac Taschenrechner.java
java Taschenrechner 10 + 5
# Ausgabe: Ergebnis: 15.0Wenn du mehr über Methoden im Allgemeinen lernen willst, schau dir unseren Guide zu Java Methoden an.
Welche Fehler passieren oft am Anfang?
Fehler bei der Java Main Methode sind frustrierend, aber leicht zu beheben, wenn man die Meldungen versteht.
Fehler 1: Fehlendes static
Der Klassiker: Du vergisst `static`. Die JVM findet die Methode zwar, kann sie aber nicht ohne Objekt aufrufen.
// Falsch: Ohne static startet das Programm nicht
public void main(String[] args) {
System.out.println("Hallo");
}
// Fehlermeldung: Main method not found in class...Fehler 2: Falsche Schreibweise bei main
Ein simpler Tippfehler, und nichts funktioniert. Java unterscheidet strikt zwischen Groß- und Kleinschreibung.
// Falsch: Main statt main
public static void Main(String[] args) {}
// Falsch: mian statt main (Tippfehler)
public static void mian(String[] args) {}
// Richtig: Klein geschrieben
public static void main(String[] args) {}Fehler 3: Methode in der falschen Klasse
Wenn dein Projekt mehrere Klassen hat, muss die Main Methode in der Klasse stehen, die du auch startest. Das klingt logisch, ist aber in der Praxis ein häufiger Stolperstein - besonders bei Azubis in IHK-Prüfungen oder Studenten in Klausuren.
Lässt sich die Main Methode überladen?
Ja, du kannst mehrere Methoden namens `main` schreiben - sogenanntes Überladen (Overloading). Das ist ein Konzept aus der objektorientierten Programmierung, bei dem mehrere Methoden denselben Namen, aber unterschiedliche Parameter haben.
Aber: Nur die Variante mit `String[] args` wird von der JVM als Einstiegspunkt erkannt. Die anderen kannst du nur programmintern aufrufen.
public class MainTest {
// Das ist der echte Einstiegspunkt
public static void main(String[] args) {
System.out.println("JVM startet hier");
main(42); // Ruft die ueberladene Methode auf
}
// Das ist eine ueberladene Methode - kein Einstiegspunkt
public static void main(int zahl) {
System.out.println("Ueberladen: " + zahl);
}
}FAQ: Häufige Fragen zur Java Main Methode
Kann ein Programm mehrere Main Methoden haben?
Ja, aber nur eine pro Klasse. Wenn dein Projekt mehrere Klassen hat, kann jede Klasse eine eigene Main Methode haben. Beim Starten wählst du dann aus, welche Klasse (und damit welche Main Methode) ausgeführt werden soll. Das ist super zum Testen von einzelnen Klassen.
Was passiert, wenn es keine Main Methode gibt?
Das Programm startet nicht. Die JVM gibt die Fehlermeldung "Error: Main method not found in class..." aus. Das gilt für alle ausführbaren Programme - Ausnahme sind Bibliotheken (wie JAR-Dateien), die gar nicht selbst gestartet, sondern nur benutzt werden.
Kann die Main Methode etwas anderes als String[] als Parameter haben?
Nein. Die JVM erkennt nur `String[] args` (oder alternativ `String args[]`, was dasselbe ist). Seit Java 5 geht auch die varargs-Syntax `String... args`. Alle anderen Parameter-Typen wie `int` oder `double` werden ignoriert.
Muss die Main Methode immer in einer public class stehen?
Theoretisch nein. Du kannst die Main Methode auch in einer Klasse mit Default-Sichtbarkeit (ohne Modifizierer) schreiben. Aber in der Praxis - und besonders in der Prüfung - solltest du dich an die Konvention halten: Eine public class mit demselben Namen wie die Datei.
Warum gibt es String[] args, wenn ich es nie nutze?
Weil die Signatur `public static void main(String[] args)` fest vorgegeben ist. Auch wenn du keine Kommandozeilenargumente übergibst, muss der Parameter da sein. Die JVM ruft die Methode so auf - ob du die Argumente nutzt oder nicht, ist dir überlassen.
Fazit
Die Java Main Methode ist nicht kompliziert - sie folgt nur strengen Regeln. Public macht sie für die JVM sichtbar, static ermöglicht den Aufruf ohne Objekt, void bedeutet kein Rückgabewert, und main ist einfach der festgelegte Name. `String[] args` erlaubt dir, Werte beim Programmstart zu übergeben. Wenn du diese fünf Bausteine verstehst, kannst du jedes Java-Programm starten und debuggen.
Am besten experimentierst du direkt mal ein bisschen herum. Ändere die Parameter weg, nimm `static` raus und schau, welche Fehlermeldungen die Java Virtual Machine wirft. So lernst du am schnellsten.
Brauchst du Hilfe beim Verstehen von Java-Konzepten? Bei study-it.education bekommst du individuelle Nachhilfe - ob für deine Ausbildung, dein Studium oder den Berufseinstieg. Wir erklären dir Java so, dass es wirklich hängenbleibt.
Need someone to walk through this with you?
Instead of re-reading: 30 min with a senior dev.
Book a free first chat →
Einfache Erklärung der Java Main Methode für Azubis, Studenten und Berufseinsteiger. Verstehen Sie public static void main Schritt für Schritt.
marcel.schmidtpeter@study-it.education →More reading
Java innere Klassen: Wann und warum? Einfach erklärt
Innere Klassen strukturieren Java-Code sauberer. Dieser Guide erklärt Azubis, Studenten und Einsteigern, wann und warum man sie einsetzt.
Java StringBuilder vs String: Wann nutzen?
Lernen Sie den Unterschied zwischen String und StringBuilder in Java kennen. Effizient programmieren für Azubis, Studenten und Berufseinsteiger.
Java Pakete Import einfach erklärt: So organisierst du Code
Java Pakete und Imports einfach erklärt für Azubis, Studenten und Berufseinsteiger. Ordnung im Java-Code.