Main() ir sākuma punkts, lai JVM sāktu Java programmas izpildi. Bez main() metodes JVM neizpildīs programmu. Main() metodes sintakse ir:
publiski: Tas ir piekļuves norādītājs. Pirms metodes main() mums jāizmanto publisks atslēgvārds, lai JVM varētu identificēt programmas izpildes punktu. Ja mēs izmantosim privāto, aizsargāto un noklusējuma metodi pirms main() metodes, tas nebūs redzams JVM.
statisks: Varat padarīt metodi statisku, izmantojot atslēgvārdu static. Mums vajadzētu izsaukt main() metodi, neveidojot objektu. Statiskās metodes ir metode, kas izsauc, neizveidojot objektus, tāpēc mums nav nepieciešams neviens objekts, lai izsauktu galveno () metodi.
spēkā neesošs: Java versijā katrai metodei ir atgriešanas veids. Void atslēgvārds apstiprina kompilatoru, ka main() metode neatgriež nekādu vērtību.
galvenais (): Tas ir noklusējuma paraksts, kas ir iepriekš definēts JVM. JVM to izsauc, lai izpildītu programmu pa rindiņai un pēc šīs metodes pabeigšanas pabeigtu izpildi. Mēs varam arī pārslogot main() metodi.
Virknes args[]: Main() metode arī pieņem dažus datus no lietotāja. Tā pieņem virkņu grupu, ko sauc par virkņu masīvu. To izmanto, lai turētu komandrindas argumentus virknes vērtību veidā.
main(String args[])
Šeit agrs[] ir masīva nosaukums, un tam ir virknes veids. Tas nozīmē, ka tajā var saglabāt virkņu grupu. Atcerieties, ka šajā masīvā var saglabāt arī skaitļu grupu, bet tikai virknes formā. Vērtības, kas nodotas main() metodei, sauc par argumentiem. Šie argumenti tiek saglabāti args[] masīvā, tāpēc parasti tam tiek izmantots nosaukums args[].
Kas notiek, ja main() metode tiek uzrakstīta bez String args[]?
Programma kompilēs, bet nedarbosies, jo JVM neatpazīs main() metodi. Atcerieties, ka JVM vienmēr meklē main() metodi ar virknes tipa masīvu kā parametru.
Izpildes process
Vispirms JVM izpilda statisko bloku, pēc tam izpilda statiskās metodes un pēc tam izveido programmai nepieciešamo objektu. Visbeidzot, tas izpilda gadījumu metodes. JVM izpilda statisku bloku pēc augstākās prioritātes. Tas nozīmē, ka JVM vispirms pāriet uz statisko bloku, pat pirms tas programmā meklē galveno () metodi.
Piemērs
class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } }
Izvade:
Static block Static method
Mēs novērojam, ka JVM vispirms izpilda statisko bloku, ja tas ir programmā. Pēc tam tas meklē galveno () metodi. Ja main() metode netiek atrasta, tā rada kļūdu.
Piemērs
Programma, kurai nav main() metodes, izpildes laikā rada kļūdu.
class DemoStaticBlock { Static //static block { System.out.println('Static block'); } }
Izvade:
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
Tātad galvenā () metode vienmēr jāraksta šādi:
public static void main(String args[])
Mēs varam apmainīties ar publisko un statisko un rakstīt to šādi:
static public void main(String args[])
Mēs varam arī izmantot atšķirīgu nosaukumu virknes tipa masīvam un rakstīt to kā:
static public void main(String[] x)
Main() metodes rakstīšanas veidi ir šādi:
static public void main(String []x) static public void main(String...args)
Virkne...args: Tas ļauj metodei pieņemt nulli vai vairākus argumentus. Starp virkni un masīvu jābūt tieši trim punktiem; pretējā gadījumā tas rada kļūdu.
Piemērs
Programma, kurai nav main() metodes, bet tā tiek kompilēta un darbojas veiksmīgi.
abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } }
Izvade:
Java
Main() metodes pārslodze
Mēs varam arī pārslogot main() metodi. Klasē varam definēt jebkuru main() metožu skaitu, taču metodes parakstam ir jābūt citam.
Piemērs
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); } }
Izvade:
ķēde uz priekšu
main method invoked 6