Main() este punctul de pornire pentru ca JVM să înceapă execuția unui program Java. Fără metoda main(), JVM nu va executa programul. Sintaxa metodei main() este:
public: Este un specificator de acces. Ar trebui să folosim un cuvânt cheie public înaintea metodei main(), astfel încât JVM să poată identifica punctul de execuție al programului. Dacă folosim privat, protejat și implicit înainte de metoda main(), aceasta nu va fi vizibilă pentru JVM.
static: Puteți face o metodă statică folosind cuvântul cheie static. Ar trebui să apelăm metoda main() fără a crea un obiect. Metodele statice sunt metoda care invocă fără a crea obiecte, deci nu avem nevoie de niciun obiect pentru a apela metoda main().
nul: În Java, fiecare metodă are tipul returnat. Cuvântul cheie Void recunoaște compilatorului că metoda main() nu returnează nicio valoare.
principal(): Este o semnătură implicită care este predefinită în JVM. Este apelat de JVM pentru a executa un program linie cu linie și pentru a încheia execuția după finalizarea acestei metode. De asemenea, putem supraîncărca metoda main().
Argumente șir[]: Metoda main() acceptă și unele date de la utilizator. Acceptă un grup de șiruri, care se numește matrice de șiruri. Este folosit pentru a menține argumentele liniei de comandă sub formă de valori șir.
main(String args[])
Aici, agrs[] este numele matricei și este de tip String. Înseamnă că poate stoca un grup de șiruri. Amintiți-vă, această matrice poate stoca și un grup de numere, dar numai sub formă de șir. Valorile transmise metodei main() se numesc argumente. Aceste argumente sunt stocate în matricea args[], deci numele args[] este folosit în general pentru aceasta.
Ce se întâmplă dacă metoda main() este scrisă fără String args[]?
Programul va compila, dar nu va rula, deoarece JVM nu va recunoaște metoda main(). Rețineți că JVM caută întotdeauna metoda main() cu o matrice de tip șir ca parametru.
Procesul de execuție
Mai întâi, JVM execută blocul static, apoi execută metode statice și apoi creează obiectul necesar programului. În cele din urmă, execută metodele de instanță. JVM execută un bloc static cu cea mai mare prioritate. Înseamnă că JVM trece mai întâi la blocul static chiar înainte de a căuta metoda main() în program.
Exemplu
class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } }
Ieșire:
Static block Static method
Observăm că JVM execută mai întâi blocul static, dacă acesta este prezent în program. După aceea, caută metoda main(). Dacă metoda main() nu este găsită, dă eroare.
Exemplu
Un program care nu are metoda main() dă o eroare în timpul rulării.
class DemoStaticBlock { Static //static block { System.out.println('Static block'); } }
Ieșire:
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
Deci metoda main() ar trebui să fie întotdeauna scrisă ca:
public static void main(String args[])
Putem schimba public și static și îl putem scrie după cum urmează:
static public void main(String args[])
De asemenea, putem folosi un nume diferit pentru tabloul de tip String și îl putem scrie ca:
static public void main(String[] x)
Diferite moduri de scriere a metodei main() sunt:
static public void main(String []x) static public void main(String...args)
String...args: Permite metodei să accepte zero sau mai multe argumente. Ar trebui să existe exact trei puncte între String și array; altfel, dă o eroare.
Exemplu
Un program care nu are nicio metodă main(), dar se compila și rulează cu succes.
abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } }
Ieșire:
Java
Supraîncărcarea metodei main().
De asemenea, putem supraîncărca metoda main(). Putem defini orice număr de metode main() din clasă, dar semnătura metodei trebuie să fie diferită.
Exemplu
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); } }
Ieșire:
alăturare stânga vs alăturare dreapta
main method invoked 6