Main() je začetna točka za JVM za začetek izvajanja programa Java. Brez metode main() JVM ne bo izvedel programa. Sintaksa metode main() je:
javno: Je specifikator dostopa. Pred metodo main() bi morali uporabiti javno ključno besedo, da lahko JVM prepozna točko izvajanja programa. Če pred metodo main() uporabimo private, protected in default, JVM ne bo viden.
statično: Metodo lahko naredite statično z uporabo ključne besede static. Poklicati bi morali metodo main(), ne da bi ustvarili objekt. Statične metode so metode, ki kličejo brez ustvarjanja objektov, zato ne potrebujemo nobenega predmeta za klic metode main().
praznina: V Javi ima vsaka metoda povratni tip. Ključna beseda Void potrjuje prevajalniku, da metoda main() ne vrne nobene vrednosti.
glavni(): To je privzeti podpis, ki je vnaprej določen v JVM. Pokliče ga JVM, da izvede program vrstico za vrstico in konča izvajanje po zaključku te metode. Metodo main() lahko tudi preobremenimo.
Argumenti niza[]: Metoda main() sprejme tudi nekatere podatke od uporabnika. Sprejme skupino nizov, ki se imenuje niz nizov. Uporablja se za shranjevanje argumentov ukazne vrstice v obliki vrednosti niza.
main(String args[])
Tu je agrs[] ime matrike in je vrste String. To pomeni, da lahko shrani skupino nizov. Ne pozabite, da lahko ta niz shrani tudi skupino števil, vendar samo v obliki niza. Vrednosti, posredovane metodi main(), se imenujejo argumenti. Ti argumenti so shranjeni v matriki args[], zato se zanje običajno uporablja ime args[].
Kaj se zgodi, če je metoda main() zapisana brez String args[]?
Program se bo prevedel, vendar se ne bo zagnal, ker JVM ne bo prepoznal metode main(). Ne pozabite, da JVM vedno išče metodo main() z vrsto niza kot parametrom.
Postopek izvedbe
Najprej JVM izvede statični blok, nato izvede statične metode in nato ustvari objekt, ki ga potrebuje program. Nazadnje izvede metode primerka. JVM izvede statični blok na podlagi najvišje prioritete. To pomeni, da JVM najprej preide v statični blok, še preden poišče metodo main() v programu.
Primer
class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } }
Izhod:
Static block Static method
Opazimo, da JVM najprej izvede statični blok, če je prisoten v programu. Nato poišče metodo main(). Če metode main() ni mogoče najti, prikaže napako.
Primer
Program, ki nima metode main(), povzroči napako med izvajanjem.
class DemoStaticBlock { Static //static block { System.out.println('Static block'); } }
Izhod:
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
Zato mora biti metoda main() vedno zapisana kot:
public static void main(String args[])
Lahko zamenjamo javno in statično ter to zapišemo na naslednji način:
static public void main(String args[])
Uporabimo lahko tudi drugo ime za matriko tipa String in jo zapišemo kot:
static public void main(String[] x)
Različni načini zapisovanja metode main() so:
static public void main(String []x) static public void main(String...args)
Niz...argi: Omogoča, da metoda sprejme nič ali več argumentov. Med nizom in nizom morajo biti natanko tri pike; sicer daje napako.
Primer
Program, ki nima metode main(), vendar se uspešno prevede in izvaja.
abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } }
Izhod:
Java
Preobremenitev metode main().
Metodo main() lahko tudi preobremenimo. V razredu lahko definiramo poljubno število metod main(), vendar mora biti podpis metode drugačen.
Primer
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); } }
Izhod:
10 od 100,00
main method invoked 6