Metoda main() se nachází na začátku a na konci každého programu v Javě. Během provádění se berou v úvahu pouze příkazy, které se nacházejí v jejím rozsahu. Proto je tak důležité věnovat pozornost každému detailu syntaxe metody. Pokud je nesprávná, program nebude proveden.

Co je to metoda main() v Javě?

Bez ohledu na to, jaký projekt chcete pomocí programovacího jazyka realizovat nebo jaký stručný či rozsáhlý kód pro něj použijete, v jazyce Java každá aplikace začíná metodou main(). Pokud není k dispozici, kód nelze spustit. Než se tento kód předá main(), načte se do paměti Java Virtual Machine (JVM) a kód se zkompiluje. Po dokončení těchto kroků se kód zkontroluje metodou Java main(). Poté se snad správně provede. V zásadě je také možné použít několik těchto metod, přičemž maximálně jednu hlavní metodu na třídu.

Jaká je syntaxe metody Java main()?

Syntaxe metody Java main() je vždy stejná. Skládá se z několika důležitých částí a vypadá takto:

public static void main(String[] args)
java

Tyto komponenty plní následující funkce:

  • public: Tato komponenta zajišťuje, že třída je přístupná i zvenčí.
  • static: Tato část deklaruje metodu jako statickou, což znamená, že může existovat, aniž by byl předem vytvořen objekt konkrétní třídy.
  • void: Tím se zajistí, že metoda main() v Javě nemusí vracet hodnotu. main: To je to, co Java Virtual Machine používá k identifikaci metody při provádění programu.
  • String[] args: Jedná se o pole, ve kterém jsou uloženy a přijímány argumenty příkazového řádku.

Proč jsou jednotlivé složky main() důležité?

Abychom lépe pochopili, jak metoda Java main() funguje a proč jsou všechny komponenty tak důležité, podíváme se na ně jednotlivě v následujících částech. Nejdůležitější je, že vám ukážeme, co se stane, pokud část podpisu chybí. K tomu si vybereme velmi jednoduchý příklad kódu, který vygenerujeme pomocí příkazu Java System.out.println.

public class main {
	public static void main(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

Po spuštění tohoto kódu se zobrazí následující výstup:

Here is your sample text.
java

public

public funguje jako specifikátor přístupu a signalizuje virtuálnímu stroji Java , kde se odpovídající program spouští. Existují i další modifikátory přístupu, jako například default, private a protected. Pokud je však použijete s metodou main() v Javě, zobrazí se chybová zpráva:

public class main {
	private static void main(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

Odpovídající problém je:

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
java

Tato chybová zpráva označuje, že k metodě není veřejný přístup.

static

Klíčové slovo static potvrzuje, že použitá metoda je statická. To znamená, že ji lze použít nezávisle na instancích třídy. Pokud tuto komponentu odstraníte, kód bude vypadat takto:

public class main {
	public void main(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

Zde se také zobrazí chybová zpráva:

Error: Main method is not static in class test, please define the main method as:
public static void main(String[] args)
java

void

void je klíčové slovo, které určuje, že metoda main() v Javě by neměla vracet žádné hodnoty. Jelikož main() je počáteční a koncový bod programu v Javě, není vykreslování nutné. Takto vypadá kód bez void:

public class main {
	public static main(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

Toto je chybová zpráva, kterou obdržíte, pokud vynecháte void:

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

main

U každého programu v jazyce Java nejprve JVM vyhledá identifikátor main. Ten označuje, kde má být spuštěno a ukončeno provádění. Jakmile je dokončeno provádění metody main() v jazyce Java, program se ukončí. Proto by podpis neměl být nikdy měněn ani doplňován. Zde je příklad toho, jak vypadá změna podpisu:

public class main {
	public static void replacementMain(String[] args) {
		System.out.println("Here is your sample text.");
	}
}
java

Jelikož JVM nemůže najít identifikátor, program přímo ukončí a zobrazí následující chybovou zprávu:

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
java

String[] args

Pole String[] args odpovídá třídě java.lang.String a obsahuje data, která ukládá jako řetězcové hodnoty. Pokud tuto specifikaci vynecháte, kód bude vypadat takto:

public class main {
	public static void main() {
		System.out.println("Here is your sample text.");
	}
}
java

Bez tohoto argumentu nelze metodu Java main() provést. V důsledku toho se znovu zobrazí následující chybová zpráva:

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
java

Jaké jsou alternativní způsoby psaní?

Zde uvedený příklad kódu byl napsán podle nejběžnější syntaxe. Můžete jej však snadno přizpůsobit, abyste získali lepší přehled. Například můžete umístit hranaté závorky přímo za args. Takto by to vypadalo:

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

Argumenty můžete také ukládat jako proměnné argumenty (varargs). K tomu je třeba použít trojtečku:

public static void main(String...args) { }
java
Přejít do hlavního menu