Java main()-Methode: Dein fixer Start- und Endpunkt für erfolgreiches Programmieren.
In Java markiert die Methode main() den Start- und Endpunkt jedes Programms. Nur Anweisungen innerhalb ihres Gültigkeitsbereichs werden bei der Ausführung berücksichtigt. Deshalb ist es entscheidend, dass du beim Coden die Syntax der Methode exakt einhältst. Fehler an dieser Stelle führen dazu, dass dein Programm erst gar nicht startet.
Was ist die Main Method in Java?
Unabhängig davon, welches Projekt du mit der Programmiersprache realisierst oder wie komplex dein Code ist: Am Anfang jeder Java-Anwendung steht die Methode main(). Ohne sie lässt sich der Code nicht ausführen. Bevor die Übergabe an main() erfolgt, wird die Java Virtual Machine (JVM) geladen und der Code kompiliert. Danach übernimmt die main-Methode die Kontrolle für eine hoffentlich reibungslose Ausführung. Du kannst zwar mehrere solcher Methoden nutzen, allerdings ist maximal eine main-Methode pro Klasse erlaubt.
Die Syntax der Java-Methode main()
Die Syntax der main()-Methode in Java bleibt stets gleich und setzt sich aus fixen Bestandteilen zusammen. So sieht sie aus:
public static void main(String[] args)javaDiese Komponenten erfüllen folgende Zwecke:
- public: Garantiert, dass auch von außen auf eine Klasse zugegriffen werden kann.
- static: Deklariert die Methode als statisch. Damit existiert sie, ohne dass vorab ein Objekt der Klasse erstellt werden muss.
- void: Legt fest, dass die Methode main() in Java keinen Rückgabewert liefert.
- main: Der Name, über den die Java Virtual Machine die Methode beim Programmstart identifiziert.
- String[] args: Ein Array, das die Kommandozeilenargumente entgegennimmt und speichert.
Die einzelnen Komponenten und ihr Nutzen
Damit du verstehst, warum jeder Teil der Java-Methode main() unverzichtbar ist, sehen wir uns die Details genauer an. Wir zeigen dir, was passiert, wenn ein Element der Signatur fehlt. Als Basis nutzen wir ein simples Beispiel, das wir mit dem Java-Befehl System.out.println ausgeben:
public class main {
public static void main(String[] args) {
System.out.println("Hier steht Ihr Beispieltext.");
}
}bashFührst du diesen Code aus, erscheint folgende Ausgabe:
Hier steht Ihr Beispieltext.bashpublic
„public“ dient als Zugriffsmodifikator und zeigt der Java Virtual Machine, wo das Programm ausgeführt wird. Zwar gibt es andere Modifikatoren wie default, private oder protected, doch in der main()-Methode führen diese zu einer Fehlermeldung:
public class main {
private static void main(String[] args) {
System.out.println("Hier steht Ihr Beispieltext.");
}
}bashDie Ausgabe dazu sieht so aus:
Error: Main method not found in class, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.ApplicationbashDiese Meldung bestätigt, dass kein öffentlicher Zugriff auf die Methode möglich ist.
static
Das Keyword „static“ markiert die Methode als statisch. Dadurch ist sie unabhängig von Klasseninstanzen nutzbar. Entfernst du diese Deklaration, sieht der Code so aus:
public class main {
public void main(String[] args) {
System.out.println("Hier steht Ihr Beispieltext.");
}
}bashAuch hier quittiert Java den Versuch mit einer Fehlermeldung statt der gewünschten Ausgabe:
Error: Main method is not static in class test, please define the main method as:
public static void main(String[] args)bashvoid
„void“ legt fest, dass die main-Methode keine Werte zurückgibt. Da sie der Start- und Endpunkt ist, wäre ein Rückgabewert ohnehin hinfällig. Ohne „void“ sähe der Code so aus:
public class main {
public static main(String[] args) {
System.out.println("Hier steht Ihr Beispieltext.");
}
}bashDas Fehlen des Keywords verursacht folgenden Fehler:
Error: Main method must return a value of type void in class Main, please define the main method as:
public static void main(String[] args)bashmain
Java sucht beim Programmstart immer nach dem Identifier „main“. Er definiert, wo die Ausführung beginnt und endet. Sobald die main()-Methode durchgelaufen ist, stoppt das Programm. Diese Signatur darfst du niemals verändern. Ein falscher Name sieht etwa so aus:
public class main {
public static void ersatzMain(String[] args) {
System.out.println("Hier steht Ihr Beispieltext.");
}
}bashDa die JVM den Identifier nicht findet, bricht sie sofort mit dieser Meldung ab:
Error: Main method not found in class, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.ApplicationbashString[] args
Das Array „String[] args“ gehört zur Klasse java.lang.String und speichert Daten als String-Werte. Lässt du diese Angabe weg, ändert sich der Code wie folgt:
public class main {
public static void main() {
System.out.println("Hier steht Ihr Beispieltext.");
}
}bashOhne dieses Argument streikt die Java-Methode main() und liefert erneut eine Fehlermeldung:
Error: Main method not found in class, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.ApplicationbashAlternative Schreibweisen
Unser Beispiel nutzt die Standard-Syntax. Du kannst sie jedoch leicht variieren, falls es dir mehr Übersicht bietet. Beispielsweise lassen sich die eckigen Klammern direkt hinter „args“ setzen:
public static void main(String args[]) { }javaZudem ist es erlaubt, Argumente als „Varargs“ (variable Argumentlisten) zu definieren:
public static void main(String…args) { }java