logo

Méthode Java main()

Le main() est le point de départ permettant à la JVM de démarrer l'exécution d'un programme Java. Sans la méthode main(), JVM n’exécutera pas le programme. La syntaxe de la méthode main() est :

Méthode principale Java

publique: C'est un spécificateur d'accès. Nous devons utiliser un mot-clé public avant la méthode main() afin que JVM puisse identifier le point d'exécution du programme. Si nous utilisons private, protected et default avant la méthode main(), elle ne sera pas visible par la JVM.

statique: Vous pouvez rendre une méthode statique en utilisant le mot-clé static. Nous devrions appeler la méthode main() sans créer d’objet. Les méthodes statiques sont la méthode qui invoque sans créer les objets, nous n’avons donc besoin d’aucun objet pour appeler la méthode main().

vide: En Java, chaque méthode a le type de retour. Le mot-clé Void reconnaît au compilateur que la méthode main() ne renvoie aucune valeur.

principal(): Il s'agit d'une signature par défaut prédéfinie dans la JVM. Il est appelé par JVM pour exécuter un programme ligne par ligne et terminer l'exécution une fois cette méthode terminée. Nous pouvons également surcharger la méthode main().

Arguments de chaîne[] : La méthode main() accepte également certaines données de l'utilisateur. Il accepte un groupe de chaînes, appelé tableau de chaînes. Il est utilisé pour contenir les arguments de ligne de commande sous forme de valeurs de chaîne.

 main(String args[]) 

Ici, agrs[] est le nom du tableau et il est de type String. Cela signifie qu'il peut stocker un groupe de chaînes. N'oubliez pas que ce tableau peut également stocker un groupe de nombres, mais uniquement sous forme de chaîne. Les valeurs transmises à la méthode main() sont appelées arguments. Ces arguments sont stockés dans le tableau args[], donc le nom args[] est généralement utilisé pour cela.

Que se passe-t-il si la méthode main() est écrite sans String args[] ?

Le programme sera compilé, mais pas exécuté, car JVM ne reconnaîtra pas la méthode main(). N'oubliez pas que JVM recherche toujours la méthode main() avec un tableau de type chaîne comme paramètre.

Processus d'exécution

Tout d’abord, JVM exécute le bloc statique, puis elle exécute les méthodes statiques, puis elle crée l’objet nécessaire au programme. Enfin, il exécute les méthodes d'instance. JVM exécute un bloc statique avec la priorité la plus élevée. Cela signifie que JVM accède d'abord au bloc statique avant même de rechercher la méthode main() dans le programme.

Exemple

 class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } } 

Sortir:

 Static block Static method 

On observe que JVM exécute en premier le bloc statique, s'il est présent dans le programme. Après cela, il recherche la méthode main(). Si la méthode main() n’est pas trouvée, cela renvoie une erreur.

Exemple

Un programme qui n'a pas la méthode main() donne une erreur au moment de l'exécution.

 class DemoStaticBlock { Static //static block { System.out.println('Static block'); } } 

Sortir:

 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 

Ainsi, la méthode main() doit toujours être écrite comme :

 public static void main(String args[]) 

Nous pouvons échanger public et static et l'écrire comme suit :

 static public void main(String args[]) 

Nous pouvons également utiliser un nom différent pour le tableau de type String et l'écrire ainsi :

 static public void main(String[] x) 

Différentes façons d’écrire la méthode main() sont :

 static public void main(String []x) static public void main(String...args) 

Chaîne...arguments : Cela permet à la méthode d’accepter zéro ou plusieurs arguments. Il doit y avoir exactement trois points entre String et array ; sinon, cela donne une erreur.

Exemple

Un programme qui n'a pas de méthode main(), mais qui se compile et s'exécute avec succès.

 abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } } 

Sortir:

 Java 

Surcharge de la méthode main()

Nous pouvons également surcharger la méthode main(). Nous pouvons définir n'importe quel nombre de méthodes main() dans la classe, mais la signature de la méthode doit être différente.

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); } } 

Sortir:

liste double chaînée
 main method invoked 6