Main() je výchozím bodem pro JVM ke spuštění provádění programu Java. Bez metody main() JVM program nespustí. Syntaxe metody main() je:
veřejnost: Je to specifikátor přístupu. Před metodou main() bychom měli použít veřejné klíčové slovo, aby JVM mohlo identifikovat bod provádění programu. Pokud před metodou main() použijeme private, protected a default, nebude to pro JVM viditelné.
statický: Metodu můžete učinit statickou pomocí klíčového slova static. Měli bychom volat metodu main() bez vytvoření objektu. Statické metody jsou metody, které se zavolají bez vytvoření objektů, takže k volání metody main() nepotřebujeme žádný objekt.
neplatné: V Javě má každá metoda návratový typ. Klíčové slovo Void potvrzuje kompilátoru, že metoda main() nevrací žádnou hodnotu.
hlavní(): Je to výchozí podpis, který je předdefinován v JVM. Je volána JVM, aby provedla program řádek po řádku a ukončila provádění po dokončení této metody. Můžeme také přetížit metodu main().
Argumenty řetězce[]: Metoda main() také přijímá některá data od uživatele. Přijímá skupinu řetězců, která se nazývá pole řetězců. Používá se k uložení argumentů příkazového řádku ve formě řetězcových hodnot.
main(String args[])
Zde je agrs[] název pole a je typu String. To znamená, že může uložit skupinu řetězců. Pamatujte, že toto pole může také ukládat skupinu čísel, ale pouze ve formě řetězce. Hodnoty předané do metody main() se nazývají argumenty. Tyto argumenty jsou uloženy do pole args[], proto se pro něj obecně používá název args[].
Co se stane, když je metoda main() napsána bez argumentů String[]?
Program se zkompiluje, ale nespustí, protože JVM nerozpozná metodu main(). Pamatujte, že JVM vždy hledá metodu main() s polem typu řetězec jako parametrem.
Proces provádění
Nejprve JVM provede statický blok, poté provede statické metody a poté vytvoří objekt potřebný pro program. Nakonec provede instanční metody. JVM provádí statický blok na základě nejvyšší priority. To znamená, že JVM nejprve přejde do statického bloku ještě předtím, než v programu vyhledá metodu main().
Příklad
class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } }
Výstup:
Static block Static method
Pozorujeme, že JVM nejprve provede statický blok, pokud je v programu přítomen. Poté hledá metodu main(). Pokud metoda main() není nalezena, zobrazí chybu.
Příklad
Program, který nemá metodu main(), zobrazí za běhu chybu.
class DemoStaticBlock { Static //static block { System.out.println('Static block'); } }
Výstup:
Error: Main method not found in the class Demo, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application
Takže metoda main() by měla být vždy napsána jako:
public static void main(String args[])
Můžeme zaměnit veřejné a statické a napsat to následovně:
static public void main(String args[])
Můžeme také použít jiný název pro pole typu String a napsat jej jako:
static public void main(String[] x)
Různé způsoby zápisu metody main() jsou:
static public void main(String []x) static public void main(String...args)
Řetězec...argy: Umožňuje metodě přijímat nula nebo více argumentů. Mezi řetězcem a polem by měly být přesně tři tečky; jinak vypíše chybu.
Příklad
Program, který nemá metodu main(), ale úspěšně se zkompiluje a spustí.
abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } }
Výstup:
Java
Přetížení metody main().
Můžeme také přetížit metodu main(). Ve třídě můžeme definovat libovolný počet metod main(), ale podpis metody musí být odlišný.
Příklad
class OverloadMain { public static void main(int a) //overloaded main method { System.out.println(a); } public static void main(String args[]) { System.out.println('main method incoked'); main(6); } }
Výstup:
10 ze 100,00
main method invoked 6