Main() er udgangspunktet for, at JVM starter udførelse af et Java-program. Uden main()-metoden vil JVM ikke køre programmet. Syntaksen for main() metoden er:
offentlig: Det er en adgangsspecifikation. Vi bør bruge et offentligt søgeord før main()-metoden, så JVM kan identificere programmets udførelsespunkt. Hvis vi bruger private, protected og default før main()-metoden, vil den ikke være synlig for JVM.
statisk: Du kan gøre en metode statisk ved at bruge søgeordet static. Vi bør kalde main()-metoden uden at oprette et objekt. Statiske metoder er den metode, der påberåber sig uden at skabe objekterne, så vi behøver ikke noget objekt for at kalde main()-metoden.
ugyldig: I Java har hver metode returtypen. Void nøgleord anerkender compileren, at main() metoden ikke returnerer nogen værdi.
hoved(): Det er en standardsignatur, som er foruddefineret i JVM. Det kaldes af JVM at udføre et program linje for linje og afslutte udførelsen efter fuldførelse af denne metode. Vi kan også overbelaste main() metoden.
Streng args[]: Main()-metoden accepterer også nogle data fra brugeren. Det accepterer en gruppe af strenge, som kaldes en streng array. Det bruges til at holde kommandolinjeargumenterne i form af strengværdier.
main(String args[])
Her er agrs[] array-navnet, og det er af String-typen. Det betyder, at den kan gemme en gruppe af strenge. Husk, at dette array også kan gemme en gruppe af tal, men kun i form af en streng. Værdier, der sendes til main()-metoden kaldes argumenter. Disse argumenter er gemt i args[]-array, så navnet args[] bruges generelt til det.
Hvad sker der, hvis main()-metoden er skrevet uden String args[]?
Programmet vil kompilere, men ikke køre, fordi JVM ikke genkender main()-metoden. Husk, at JVM altid leder efter main()-metoden med en strengtype-array som parameter.
Udførelsesproces
Først udfører JVM den statiske blok, derefter udfører den statiske metoder, og derefter opretter den det objekt, som programmet har brug for. Til sidst udfører den instansmetoderne. JVM udfører en statisk blok på højeste prioritet. Det betyder, at JVM først går til statisk blok, selv før den leder efter main()-metoden i programmet.
Eksempel
class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } }
Produktion:
Static block Static method
Vi observerer, at JVM først udfører den statiske blok, hvis den er til stede i programmet. Derefter søger den efter main() metoden. Hvis main()-metoden ikke findes, giver den fejl.
Eksempel
Et program, der ikke har metoden main() giver en fejl under kørsel.
class DemoStaticBlock { Static //static block { System.out.println('Static block'); } }
Produktion:
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
Så main() metoden skal altid skrives som:
public static void main(String args[])
Vi kan udveksle offentlig og statisk og skrive det som følger:
static public void main(String args[])
Vi kan også bruge det forskellige navn til String type array og skrive det som:
static public void main(String[] x)
Forskellige måder at skrive main() metode på er:
static public void main(String []x) static public void main(String...args)
String...args: Det tillader metoden at acceptere nul eller flere argumenter. Der skal være præcis tre prikker mellem streng og array; ellers giver det en fejl.
Eksempel
Et program, der ikke har nogen main()-metode, men kompilerer og kører med succes.
abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } }
Produktion:
Java
Overbelastning af main()-metoden
Vi kan også overbelaste main() metoden. Vi kan definere et hvilket som helst antal main()-metoder i klassen, men metodesignaturen skal være anderledes.
Eksempel
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); } }
Produktion:
k nærmeste nabo-algoritme
main method invoked 6