Die Methode main() ist in Java Anfangs- und Endpunkt eines jeden Programms. Nur An­wei­sun­gen, die innerhalb ihres Gül­tig­keits­be­reichs stehen, werden auch bei der Aus­füh­rung be­rück­sich­tigt. Daher ist es auch so wichtig, dass bei der Er­stel­lung des Codes die Syntax der Methode bis ins kleinste Detail beachtet wird. Ist diese falsch, wird das Programm nicht aus­ge­führt.

Was ist die Main Method in Java?

Egal, welches Projekt Sie mit der Pro­gram­mier­spra­che umsetzen möchten und welchen knappen oder um­fang­rei­chen Code Sie dafür verwenden: Am Anfang einer jeden Anwendung steht in Java die Methode main(). Ist diese nicht vorhanden, kann der Code nicht aus­ge­führt werden. Bevor dieser an main() übergeben wird, wird zunächst die Java Virtual Machine (JVM) in den Speicher geladen und der Code kom­pi­liert. Sind diese Ar­beits­schrit­te erledigt, geht der Code zur Kontrolle an die Java-Methode main() und wird dann hof­fent­lich korrekt aus­ge­führt. Grund­sätz­lich ist es auch möglich, mehrere dieser Methoden zu verwenden, wobei das Maximum bei einer main-Methode pro Klasse liegt.

Web­hos­ting
Das beste Web­hos­ting zum Spit­zen­preis
  • 3x schneller und 60 % günstiger
  • Maximale Ver­füg­bar­keit mit > 99.99 %
  • Nur bei IONOS: Bis zu 500 GB Spei­cher­platz inklusive

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 Be­stand­tei­le erfüllen die folgenden Funk­tio­nen:

  • public: Stellt sicher, dass auch von außerhalb auf eine Klasse zu­ge­grif­fen werden kann.
  • static: De­kla­riert die Methode als statisch. So kann sie exis­tie­ren, ohne dass im Vorfeld ein Objekt einer be­stimm­ten Klasse gebildet wurde.
  • void: Sorgt dafür, dass die Methode main() in Java keinen Wert zu­rück­ge­ben muss. -main: Dies ist der Name, durch den die Java Virtual Machine die Methode iden­ti­fi­zie­ren kann, sobald sie ein Programm ausführt.
  • String[] args: Hierbei handelt es sich um ein Array, in dem die Kom­man­do­zei­len­ar­gu­men­te hin­ter­legt und ent­ge­gen­ge­nom­men werden.

Die einzelnen Kom­po­nen­ten und ihr Nutzen

Um besser zu verstehen, wie die Java-Methode main() funk­tio­niert und warum alle Be­stand­tei­le so wichtig sind, gehen wir sie in den folgenden Ab­schnit­ten 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 Code­bei­spiel, 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 si­gna­li­siert der Java Virtual Machine, wo das ent­spre­chen­de Programm aus­ge­führt wird. Es gibt andere Zu­griffs­mo­di­fi­ka­to­ren wie default, private oder protected. Wenn Sie diese jedoch innerhalb der main()-Methode in Java nutzen, werden Sie eine Feh­ler­mel­dung erhalten:

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

Die ent­spre­chen­de 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 Feh­ler­mel­dung si­gna­li­siert, dass es keinen öf­fent­li­chen Zugriff auf die Methode gibt.

static

Dass die ver­wen­de­te Methode statisch ist, wird durch das Schlüs­sel­wort „static“ bestätigt. Sie kann dadurch auch un­ab­hän­gig von etwaigen er­stell­ten Klas­sen­in­stan­zen genutzt werden. Wenn Sie die De­kla­ra­ti­on als „static“ entfernen, sieht der Code fol­gen­der­ma­ß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 Feh­ler­mel­dung statt der ge­wünsch­ten 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 zu­rück­ge­ben soll. Da main() der Start- und Endpunkt eines Programms in Java ist, wäre eine Wie­der­ga­be 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 Feh­ler­mel­dung, 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 so­ge­nann­ten Iden­ti­fier „main“. Dieser zeigt an, wo die Aus­füh­rung beginnen und enden soll. Sobald die Methode main() in Java ab­ge­schlos­sen 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 Iden­ti­fier nicht finden kann, wird sie das Programm direkt beenden und nur folgende Feh­ler­mel­dung 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“ ent­spricht der Klasse java.lang.String und enthält Daten, die er als String-Werte speichert. Ver­zich­ten Sie auf diese Angabe, ändert das den Code fol­gen­der­ma­ß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 aus­ge­führt werden und Sie erhalten erneut die folgende Feh­ler­mel­dung:

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

Al­ter­na­ti­ve Schreib­wei­sen

Das hier gezeigte Code­bei­spiel wurde nach der gän­gigs­ten Syntax ge­schrie­ben. Sie können diese al­ler­dings leicht anpassen, wenn Sie sich davon einen besseren Überblick ver­spre­chen. So ist es möglich, die eckigen Klammern direkt hinter „args“ zu plat­zie­ren. Das sieht so aus:

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

Außerdem dürfen Sie Argumente auch als „Varargs“, also variable Ar­gu­ment­lis­ten hin­ter­le­gen:

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

In unserem Digital Guide finden Sie zahl­rei­che weitere Artikel zum Thema Java. Wir haben zum Beispiel Java mit Ja­va­Script ver­gli­chen und stellen Ihnen die wich­tigs­ten Java-Ope­ra­to­ren vor.

Zum Hauptmenü