El main() és el punt de partida perquè la JVM iniciï l'execució d'un programa Java. Sense el mètode main(), JVM no executarà el programa. La sintaxi del mètode main() és:
públic: És un especificador d'accés. Hauríem d'utilitzar una paraula clau pública abans del mètode main() perquè la JVM pugui identificar el punt d'execució del programa. Si utilitzem privat, protegit i predeterminat abans del mètode main(), no serà visible per a JVM.
estàtica: Podeu fer un mètode estàtic utilitzant la paraula clau static. Hauríem de cridar al mètode main() sense crear un objecte. Els mètodes estàtics són el mètode que invoca sense crear els objectes, de manera que no necessitem cap objecte per cridar el mètode main().
buit: A Java, cada mètode té el tipus de retorn. La paraula clau Void reconeix al compilador que el mètode main() no retorna cap valor.
principal(): És una signatura predeterminada que està predefinida a la JVM. És cridat per JVM per executar un programa línia per línia i finalitzar l'execució després de completar aquest mètode. També podem sobrecarregar el mètode main().
Arguments de cadena[]: El mètode main() també accepta algunes dades de l'usuari. Accepta un grup de cadenes, que s'anomena matriu de cadenes. S'utilitza per mantenir els arguments de la línia d'ordres en forma de valors de cadena.
main(String args[])
Aquí, agrs[] és el nom de la matriu i és de tipus String. Vol dir que pot emmagatzemar un grup de cadenes. Recordeu que aquesta matriu també pot emmagatzemar un grup de números, però només en forma de cadena. Els valors passats al mètode main() s'anomenen arguments. Aquests arguments s'emmagatzemen a la matriu args[], de manera que s'utilitza generalment el nom args[].
Què passa si el mètode main() s'escriu sense String args[]?
El programa compilarà, però no s'executarà, perquè JVM no reconeixerà el mètode main(). Recordeu que JVM sempre cerca el mètode main() amb una matriu de tipus string com a paràmetre.
Procés d'execució
Primer, JVM executa el bloc estàtic, després executa mètodes estàtics i després crea l'objecte que necessita el programa. Finalment, executa els mètodes d'instància. JVM executa un bloc estàtic amb la prioritat més alta. Significa que JVM va primer al bloc estàtic fins i tot abans de buscar el mètode main() al programa.
Exemple
class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } }
Sortida:
Static block Static method
Observem que JVM executa primer el bloc estàtic, si està present al programa. Després d'això, cerca el mètode main(). Si no es troba el mètode main(), dóna error.
Exemple
Un programa que no té el mètode main() dóna un error en temps d'execució.
class DemoStaticBlock { Static //static block { System.out.println('Static block'); } }
Sortida:
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
Per tant, el mètode main() sempre s'ha d'escriure com:
public static void main(String args[])
Podem intercanviar públic i estàtic i escriure-ho de la següent manera:
static public void main(String args[])
També podem utilitzar el nom diferent per a la matriu de tipus String i escriure'l com:
static public void main(String[] x)
Les diferents maneres d'escriure el mètode main() són:
static public void main(String []x) static public void main(String...args)
String...args: Permet que el mètode accepti zero o múltiples arguments. Hi hauria d'haver exactament tres punts entre String i array; en cas contrari, dóna un error.
Exemple
Un programa que no té cap mètode main(), però que es compila i s'executa correctament.
abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } }
Sortida:
Java
Sobrecàrrega del mètode main().
També podem sobrecarregar el mètode main(). Podem definir qualsevol nombre de mètode main() a la classe, però la signatura del mètode ha de ser diferent.
Exemple
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); } }
Sortida:
tutorial de javascript
main method invoked 6