Menu

Syntaxe Java : classes, méthodes, instructions et accolades

La forme d'un programme Java : la méthode main, les instructions et les points-virgules, les blocs et les accolades, et les règles que le compilateur impose avant même que votre code ne s'exécute.

Cette page contient des éditeurs exécutables - modifiez, exécutez et voyez la sortie instantanément.

À quoi ressemble un programme Java

À la page précédente, vous avez fait fonctionner Java. Voyons maintenant de quoi le code lui-même est réellement constitué. Java est strict et explicite : il existe une forme fixe que tout programme doit suivre, et le compilateur vérifie cette forme avant qu'une seule ligne ne s'exécute.

Voici le plus petit programme Java complet possible. Exécutez-le :

Cela fait beaucoup de mots pour afficher une seule ligne et, contrairement à Python ou JavaScript, vous ne pouvez en omettre aucun. Chaque élément est obligatoire, il vaut donc la peine de comprendre ce que fait chacun. Nous allons le décortiquer de l'extérieur vers l'intérieur.

Tout vit dans une classe

Java n'a pas de code « libre » qui flotte au niveau supérieur d'un fichier. Tout le code vit à l'intérieur d'une classe, déclarée avec le mot-clé class et un nom :

public class Main {
    // everything goes in here
}

L'accolade ouvrante { et l'accolade fermante } correspondante délimitent le corps de la classe. Le nom Main, c'est à vous de le choisir, avec une règle importante : dans un fichier .java normal, une classe public doit correspondre exactement au nom du fichier. Une public class Main appartient à Main.java. Trompez-vous sur la casse et le compilateur refusera de la construire.

Vous apprendrez ce que sont réellement les classes dans le chapitre Classes. Pour l'instant, considérez public class Main { ... } comme l'enveloppe obligatoire autour de votre code.

La méthode main est la ligne de départ

Lorsque vous exécutez un programme Java, l'environnement d'exécution cherche une méthode précise pour commencer l'exécution :

public static void main(String[] args) {
    // your code starts here
}

Cette signature n'est pas négociable. Chaque mot a un rôle :

  • public - l'environnement d'exécution peut l'atteindre depuis l'extérieur de la classe.
  • static - elle s'exécute sans créer au préalable un objet de la classe.
  • void - elle ne renvoie rien quand elle se termine.
  • main - le nom exact que l'environnement d'exécution recherche.
  • String[] args - un tableau de tous les arguments de ligne de commande passés au programme.

Si un seul mot est erroné (Static au lieu de static, String args au lieu de String[] args), votre code peut tout de même compiler, mais son lancement échoue avec Error: Main method not found in class Main. Ce message signifie presque toujours qu'il y a une faute de frappe dans cette ligne.

Les instructions se terminent par un point-virgule

Une instruction est une consigne complète. En Java, toute instruction se termine par un point-virgule ;. Le compilateur utilise le point-virgule pour savoir où une consigne s'arrête et où commence la suivante : les sauts de ligne ne comptent pas pour lui.

Comme les sauts de ligne sont ignorés, les trois instructions pourraient tenir sur une seule ligne et fonctionner quand même, même si personne n'écrit du Java de cette façon :

int score = 90; score = score + 5; System.out.println(score);

Oubliez un point-virgule et le compilateur vous arrête avant que le programme ne s'exécute :

int score = 90
System.out.println(score);
error: ';' expected
        int score = 90
                      ^

Un point-virgule manquant est l'erreur de compilation la plus fréquente que vous rencontrerez en tant que débutant. Lorsque le compilateur pointe une ligne, vérifiez aussi la ligne au-dessus : c'est souvent là que se trouve l'omission réelle.

Blocs et accolades

Les accolades { } regroupent des instructions dans un bloc. Le corps d'une classe est un bloc, le corps d'une méthode est un bloc, et le corps d'un if ou d'une boucle est un bloc. Les blocs peuvent s'imbriquer dans d'autres blocs :

Remarquez la différence par rapport aux instructions : une ligne qui ouvre un bloc se termine par {, pas par un point-virgule, et vous ne mettez pas de point-virgule après l'accolade fermante } d'une méthode, d'une classe, d'un if ou d'une boucle. Confondre cela est une erreur classique de débutant :

public static void main(String[] args) {
    System.out.println("hi");
}; // <- this semicolon is unnecessary (and after a class/method, wrong)

L'indentation dans les exemples est purement destinée aux humains. Java l'ignore, mais une indentation cohérente est la façon dont vous et tous les autres gardez la trace de quelle { correspond à quelle }. Laissez votre éditeur indenter automatiquement et les accolades s'aligneront pour vous.

Java est sensible à la casse

Java traite les majuscules et les minuscules comme des choses complètement différentes. score, Score et SCORE sont trois noms distincts. Il en va de même pour les mots-clés et les noms intégrés :

Si vous écriviez system.out.println (s minuscule) ou String Name puis tentiez d'utiliser name, le compilateur le rejetterait. Quelques noms que les débutants écrivent fréquemment avec une mauvaise casse :

  • System - S majuscule. system.out.println(...) ne compile pas.
  • String - S majuscule. C'est une classe, contrairement aux types primitifs en minuscules.
  • void, int, public, static - tous en minuscules. Ce sont des mots-clés.

La plupart des erreurs « cannot find symbol » remontent à un dérapage de casse. L'erreur vous indique même quel symbole elle n'a pas trouvé : comparez sa casse à ce que vous avez tapé.

Rassembler les morceaux

Voici un programme un peu plus gros qui utilise tout ce qui figure sur cette page : une classe, la méthode main, plusieurs instructions, un bloc imbriqué et une casse cohérente :

Lisez-le de haut en bas : la classe enveloppe tout, main est l'endroit où l'exécution commence, chaque consigne se termine par ;, le corps du if est regroupé dans son propre bloc, et chaque nom intégré est écrit avec la bonne casse. C'est le squelette de pratiquement tous les programmes Java que vous écrirez.

Suivant : Les commentaires

Vous savez maintenant lire la structure d'un fichier Java. La prochaine chose à ajouter, ce sont des notes pour les humains : du texte que le compilateur ignore complètement. La page suivante couvre les commentaires : la forme sur une seule ligne //, la forme de bloc /* */ et le moment où un commentaire mérite vraiment sa place dans le code.

Questions fréquentes

Quelle est la syntaxe de base d'un programme Java ?

Tout programme Java vit à l'intérieur d'une classe, et l'exécution commence dans une méthode dont la signature est exactement public static void main(String[] args). Les instructions se terminent par un point-virgule, et les blocs de code sont regroupés par des accolades { }. Un programme minimal est public class Main { public static void main(String[] args) { System.out.println("Hi"); } }.

Pourquoi Java a-t-il besoin de public static void main(String[] args) ?

C'est exactement le point d'entrée que recherche l'environnement d'exécution Java. public permet à l'environnement de l'appeler depuis l'extérieur, static signifie qu'elle s'exécute sans créer d'objet au préalable, void signifie qu'elle ne renvoie rien, et String[] args reçoit les arguments de la ligne de commande. Changez un seul mot (même la casse) et le programme compile mais ne démarre pas, avec Error: Main method not found.

Toutes les instructions Java ont-elles besoin d'un point-virgule ?

Toute instruction se termine par un point-virgule : déclarations de variables, affectations, appels de méthode. Mais les lignes qui se terminent par un bloc (if, for, while, l'en-tête d'une classe ou d'une méthode) se terminent plutôt par {, et l'on ne met pas de point-virgule après l'accolade fermante } de ces blocs. Oublier un point-virgule est l'erreur de compilation la plus courante chez les débutants en Java.

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER