Java-Methode main(): Der Anfangs- und Endpunkt für alle Java-Programme

Die Methode main() ist in Java Anfangs- und Endpunkt eines jeden Programms. Nur Anweisungen, die innerhalb ihres Gültigkeitsbereichs stehen, werden auch bei der Ausführung berücksichtigt. Daher ist es auch so wichtig, dass bei der Erstellung des Codes die Syntax der Methode bis ins kleinste Detail beachtet wird. Ist diese falsch, wird das Programm nicht ausgeführt.

Was ist die Main Method in Java?

Egal, welches Projekt Sie mit der Programmiersprache umsetzen möchten und welchen knappen oder umfangreichen Code Sie dafür verwenden: Am Anfang einer jeden Anwendung steht in Java die Methode main(). Ist diese nicht vorhanden, kann der Code nicht ausgeführt werden. Bevor dieser an main() übergeben wird, wird zunächst die Java Virtual Machine (JVM) in den Speicher geladen und der Code kompiliert. Sind diese Arbeitsschritte erledigt, geht der Code zur Kontrolle an die Java-Methode main() und wird dann hoffentlich korrekt ausgeführt. Grundsätzlich ist es auch möglich, mehrere dieser Methoden zu verwenden, wobei das Maximum bei einer main-Methode pro Klasse liegt.

Günstige Webhosting-Pakete von IONOS!

Vertrauen Sie auf flexibel skalierbares und zuverlässiges Webhosting inklusive persönlichem Berater mit IONOS!

Kostenlose Domain
SSL Zertifikat
DDoS-Schutz

Die Syntax der Java-Methode main()

Die Syntax der main()-Methode in Java ist immer gleich und besteht aus mehreren wichtigen Teilen. So sieht die Methode aus:

public static void main(String[] args)
java

Diese Bestandteile erfüllen die folgenden Funktionen:

  • public: Stellt sicher, dass auch von außerhalb auf eine Klasse zugegriffen werden kann.
  • static: Deklariert die Methode als statisch. So kann sie existieren, ohne dass im Vorfeld ein Objekt einer bestimmten Klasse gebildet wurde.
  • void: Sorgt dafür, dass die Methode main() in Java keinen Wert zurückgeben muss. -main: Dies ist der Name, durch den die Java Virtual Machine die Methode identifizieren kann, sobald sie ein Programm ausführt.
  • String[] args: Hierbei handelt es sich um ein Array, in dem die Kommandozeilenargumente hinterlegt und entgegengenommen werden.

Die einzelnen Komponenten und ihr Nutzen

Um besser zu verstehen, wie die Java-Methode main() funktioniert und warum alle Bestandteile so wichtig sind, gehen wir sie in den folgenden Abschnitten noch einmal einzeln durch. Dabei zeigen wir Ihnen vor allem, was passiert, wenn ein Teil der Signatur fehlt. Dafür wählen wir ein ganz einfaches Codebeispiel, das wir jeweils mit dem Java-Befehl System.out.println ausgeben. Dieses sieht so aus:

public class main {
	public static void main(String[] args) {
		System.out.println("Hier steht Ihr Beispieltext.");
	}
}
bash

Wenn Sie diesen Code ausführen, erhalten Sie folgende Ausgabe:

Hier steht Ihr Beispieltext.
bash

public

public agiert als Access Specifier und signalisiert der Java Virtual Machine, wo das entsprechende Programm ausgeführt wird. Es gibt andere Zugriffsmodifikatoren wie default, private oder protected. Wenn Sie diese jedoch innerhalb der main()-Methode in Java nutzen, werden Sie eine Fehlermeldung erhalten:

public class main {
	private static void main(String[] args) {
		System.out.println("Hier steht Ihr Beispieltext.");
	}
}
bash

Die entsprechende Ausgabe lautet:

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.Application
bash

Diese Fehlermeldung signalisiert, dass es keinen öffentlichen Zugriff auf die Methode gibt.

static

Dass die verwendete Methode statisch ist, wird durch das Schlüsselwort „static“ bestätigt. Sie kann dadurch auch unabhängig von etwaigen erstellten Klasseninstanzen genutzt werden. Wenn Sie die Deklaration als „static“ entfernen, sieht der Code folgendermaßen aus:

public class main {
	public void main(String[] args) {
		System.out.println("Hier steht Ihr Beispieltext.");
	}
}
bash

Auch in diesem Fall erhalten Sie eine 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)
bash

void

Bei „void“ handelt es sich um ein Keyword, das festlegt, dass die Methode main() in Java keine Werte zurückgeben soll. Da main() der Start- und Endpunkt eines Programms in Java ist, wäre eine Wiedergabe unnötig. So sähe also der Code ohne „void“ aus:

public class main {
	public static main(String[] args) {
		System.out.println("Hier steht Ihr Beispieltext.");
	}
}
bash

Dies ist die Fehlermeldung, die der Verzicht des Keywords bewirkt:

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)
bash

main

Bei jedem Programm in Java sucht die JVM zunächst den sogenannten Identifier „main“. Dieser zeigt an, wo die Ausführung beginnen und enden soll. Sobald die Methode main() in Java abgeschlossen ist, wird auch die Ausgabe beendet. Diese Signatur darf daher niemals geändert oder ergänzt werden. Tun wir dies in unserem Beispiel dennoch, sieht der Code so aus:

public class main {
	public static void ersatzMain(String[] args) {
		System.out.println("Hier steht Ihr Beispieltext.");
	}
}
bash

Da die JVM den Identifier nicht finden kann, wird sie das Programm direkt beenden und nur folgende Fehlermeldung ausgeben:

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.Application
bash

String[] args

Der Array „String[] args“ entspricht der Klasse java.lang.String und enthält Daten, die er als String-Werte speichert. Verzichten Sie auf diese Angabe, ändert das den Code folgendermaßen:

public class main {
	public static void main() {
		System.out.println("Hier steht Ihr Beispieltext.");
	}
}
bash

Ohne das Argument kann die Java-Methode main() nicht ausgeführt werden und Sie erhalten erneut die folgende 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.Application
bash

Alternative Schreibweisen

Das hier gezeigte Codebeispiel wurde nach der gängigsten Syntax geschrieben. Sie können diese allerdings leicht anpassen, wenn Sie sich davon einen besseren Überblick versprechen. So ist es möglich, die eckigen Klammern direkt hinter „args“ zu platzieren. Das sieht so aus:

public static void main(String args[]) { }
java

Außerdem dürfen Sie Argumente auch als „Varargs“, also variable Argumentlisten hinterlegen:

public static void main(String…args) { }
java
Tipp

In unserem Digital Guide finden Sie zahlreiche weitere Artikel zum Thema Java. Wir haben zum Beispiel Java mit JavaScript verglichen und stellen Ihnen die wichtigsten Java-Operatoren vor.