De main() is het startpunt voor JVM om de uitvoering van een Java-programma te starten. Zonder de methode main() zal JVM het programma niet uitvoeren. De syntaxis van de methode main() is:
openbaar: Het is een toegangsspecificatie. We moeten een openbaar trefwoord gebruiken vóór de methode main() zodat JVM het uitvoeringspunt van het programma kan identificeren. Als we private, protected en default gebruiken vóór de main() methode, zal deze niet zichtbaar zijn voor JVM.
statisch: U kunt een methode statisch maken door het trefwoord statisch te gebruiken. We moeten de methode main() aanroepen zonder een object te maken. Statische methoden zijn de methode die wordt aangeroepen zonder de objecten te maken, dus we hebben geen enkel object nodig om de methode main() aan te roepen.
leegte: In Java heeft elke methode het retourtype. Het trefwoord Void erkent de compiler dat de methode main() geen enkele waarde retourneert.
voornaamst(): Het is een standaardhandtekening die vooraf is gedefinieerd in de JVM. Het wordt door JVM aangeroepen om een programma regel voor regel uit te voeren en de uitvoering te beëindigen na voltooiing van deze methode. We kunnen ook de methode main() overbelasten.
Tekenreeksargumenten[]: De methode main() accepteert ook enkele gegevens van de gebruiker. Het accepteert een groep strings, die een stringarray wordt genoemd. Het wordt gebruikt om de opdrachtregelargumenten in de vorm van tekenreekswaarden vast te houden.
main(String args[])
Hier is agrs[] de arraynaam en deze is van het String-type. Het betekent dat het een groep tekenreeksen kan opslaan. Houd er rekening mee dat deze array ook een groep getallen kan opslaan, maar alleen in de vorm van een string. Waarden die aan de methode main() worden doorgegeven, worden argumenten genoemd. Deze argumenten worden opgeslagen in de array args[], dus meestal wordt de naam args[] ervoor gebruikt.
Wat gebeurt er als de methode main() wordt geschreven zonder String args[]?
Het programma zal compileren, maar niet uitvoeren, omdat JVM de methode main() niet zal herkennen. Onthoud dat JVM altijd zoekt naar de methode main() met een array van het stringtype als parameter.
Uitvoeringsproces
Eerst voert JVM het statische blok uit, vervolgens voert het statische methoden uit en vervolgens creëert het het object dat het programma nodig heeft. Ten slotte voert het de instantiemethoden uit. JVM voert een statisch blok uit op basis van de hoogste prioriteit. Het betekent dat JVM eerst naar het statische blok gaat, nog voordat het naar de methode main() in het programma zoekt.
Voorbeeld
class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } }
Uitgang:
Static block Static method
We zien dat JVM eerst het statische blok uitvoert, als dit in het programma aanwezig is. Daarna zoekt het naar de methode main(). Als de methode main() niet wordt gevonden, geeft deze een foutmelding.
Voorbeeld
Een programma dat niet over de methode main() beschikt, geeft een foutmelding tijdens runtime.
class DemoStaticBlock { Static //static block { System.out.println('Static block'); } }
Uitgang:
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
De methode main() moet dus altijd worden geschreven als:
public static void main(String args[])
We kunnen publiek en statisch verwisselen en het als volgt schrijven:
static public void main(String args[])
We kunnen ook een andere naam gebruiken voor de array van het String-type en deze schrijven als:
static public void main(String[] x)
Verschillende manieren om de methode main() te schrijven zijn:
static public void main(String []x) static public void main(String...args)
Tekenreeks...argumenten: Hierdoor kan de methode nul of meerdere argumenten accepteren. Er moeten precies drie punten tussen String en array staan; anders geeft het een foutmelding.
Voorbeeld
Een programma dat geen main()-methode heeft, maar wel compileert en succesvol draait.
abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } }
Uitgang:
Java
Overbelasting van de methode main().
We kunnen ook de methode main() overbelasten. We kunnen een willekeurig aantal main()-methoden in de klasse definiëren, maar de handtekening van de methode moet anders zijn.
Voorbeeld
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); } }
Uitgang:
geheel getal naar tekenreeks
main method invoked 6