Mots-clés, identificateurs et conventions de nommage en Java
Prérequis
Avoir écrit et exécuté un premier programme Java. Connaître la structure de base d'une classe Java.
Objectifs
Connaître les mots-clés réservés du langage Java, maîtriser les règles de définition des identificateurs valides, et appliquer les conventions de nommage CamelCase en vigueur dans l'écosystème Java.
1. Les mots-clés Java
1.1 Tableau des mots-clés Java
Java compte 51 mots-clés, regroupés par catégorie :
Types de données primitifs
| Mot-clé | Description | Taille |
|---|---|---|
boolean |
Valeur logique (true ou false) |
1 bit |
byte |
Entier signé | 8 bits |
short |
Entier signé | 16 bits |
int |
Entier signé | 32 bits |
long |
Entier signé | 64 bits |
float |
Nombre à virgule flottante simple précision | 32 bits |
double |
Nombre à virgule flottante double précision | 64 bits |
char |
Caractère Unicode non signé | 16 bits |
void |
Indique qu'une méthode ne retourne aucune valeur | — |
Structure et contrôle de flux
| Mot-clé | Rôle |
|---|---|
if / else |
Test conditionnel — branche vraie / branche alternative |
switch / case / default |
Sélection multiple selon une valeur de test |
for |
Boucle à compteur |
while |
Boucle à condition en entrée |
do |
Boucle à condition en sortie (do-while) |
break |
Sort immédiatement d'une boucle ou d'un switch |
continue |
Passe à l'itération suivante d'une boucle |
return |
Renvoie le contrôle (et éventuellement une valeur) à l'appelant |
Orienté objet
| Mot-clé | Rôle |
|---|---|
class |
Déclare une nouvelle classe |
interface |
Déclare une interface |
extends |
Indique qu'une classe hérite d'une autre classe |
implements |
Indique qu'une classe implémente une interface |
abstract |
Classe ou méthode dont l'implémentation est déléguée aux sous-classes |
new |
Crée une nouvelle instance d'une classe |
this |
Référence à l'objet courant |
super |
Référence à la classe parente |
instanceof |
Teste si un objet est une instance d'une classe ou interface donnée |
enum |
Déclare un type énuméré |
Modificateurs d'accès et de comportement
| Mot-clé | Portée / Rôle |
|---|---|
public |
Accessible partout dans l'application |
protected |
Accessible dans la classe, le package et les sous-classes |
private |
Accessible uniquement dans la classe où il est déclaré |
static |
Appartient à la classe (non à une instance) |
final |
Variable constante, méthode non redéfinissable, classe non héritable |
abstract |
Méthode sans corps, à implémenter dans une sous-classe |
synchronized |
Section critique en programmation multithread |
volatile |
Variable modifiable de manière asynchrone par plusieurs threads |
transient |
Variable exclue de la sérialisation |
native |
Méthode implémentée en code natif (C/C++) |
Gestion des exceptions
| Mot-clé | Rôle |
|---|---|
try |
Délimite un bloc de code à surveiller pour les exceptions |
catch |
Capture et traite une exception levée dans le bloc try |
finally |
Bloc toujours exécuté, qu'une exception ait été levée ou non |
throw |
Lève explicitement une exception |
throws |
Déclare les exceptions qu'une méthode peut propager |
assert |
Vérifie une condition supposée vraie — lève une erreur si fausse (mode debug) |
Organisation et divers
| Mot-clé | Rôle |
|---|---|
package |
Déclare le package auquel appartient la classe |
import |
Importe une classe ou un package pour l'utiliser sans son nom complet |
var |
Inférence de type locale (depuis Java 10) — le compilateur déduit le type |
strictfp |
Force la conformité stricte IEEE 754 pour les calculs flottants |
1.2 Valeurs littérales réservées
| Littéral | Type | Valeur |
|---|---|---|
true |
boolean |
Valeur booléenne vraie |
false |
boolean |
Valeur booléenne fausse |
null |
Référence | Absence de référence à un objet |
const et goto sont réservés par Java mais non utilisés dans le langage. Ils ne peuvent donc pas non plus servir d'identificateurs.Exemple — Erreurs liées aux mots-clés
// Erreur : "class" est un mot-clé réservé
int class = 5;
// Erreur : "true" est une valeur réservée
String true = "oui";
// Correct : identificateurs valides
int nombreEleves = 30;
String statut = "actif";
error: illegal start of expression
int class = 5;
^
2. Les identificateurs Java
2.1 Règles obligatoires
- Seuls les caractères alphanumériques (
A-Z,a-z,0-9), le dollar ($) et le trait de soulignement (_) sont autorisés. - Un identificateur ne peut pas commencer par un chiffre.
- Les identificateurs sont sensibles à la casse :
age,AgeetAGEsont trois identificateurs distincts. - La longueur n'est pas limitée, mais une longueur de 4 à 15 caractères est recommandée.
- Les mots-clés réservés ne peuvent pas être utilisés comme identificateurs.
Exemple — Identificateurs valides et invalides
| Identificateur | Valide ? | Raison |
|---|---|---|
nombreEleves |
Oui | Caractères alphanumériques, commence par une lettre |
_compteur |
Oui | Le trait de soulignement est autorisé en début |
valeur2 |
Oui | Chiffre en position non initiale |
2valeur |
Non | Commence par un chiffre |
mon-age |
Non | Le tiret (-) n'est pas autorisé |
static |
Non | Mot-clé réservé |
prénom |
Non | Caractère accentué non autorisé (bonne pratique) |
$ et _ en début de nom, réservez-les aux cas spéciaux (code généré automatiquement). Préférez des noms descriptifs sans ces caractères pour une meilleure lisibilité.3. Conventions de nommage Java (CamelCase)
3.1 Classes et interfaces — UpperCamelCase
// Correct — UpperCamelCase
class GestionnaireDeComptes { }
interface ComportementAffichable { }
enum JourDeLaSemaine { LUNDI, MARDI, MERCREDI }
// À éviter
class gestionnaire { } // minuscule
class GestComp { } // abréviation peu claire
3.2 Méthodes — lowerCamelCase
// Correct — lowerCamelCase, verbes d'action
void afficherResultat() { }
String getNom() { }
boolean estConnecte() { }
void calculerMoyenne(int[] notes) { }
// À éviter
void AfficherResultat() { } // majuscule initiale
void aff() { } // trop abrégé
3.3 Variables — lowerCamelCase
i, j, k pour les entiers ; c, d pour les caractères).
// Correct
int nombreEleves = 30;
double moyenneClasse = 14.5;
String nomEtudiant = "Mostafa";
boolean estMajeur = true;
// Variables temporaires de boucle — acceptable
for (int i = 0; i < n; i++) { }
// À éviter
int NombreEleves = 30; // majuscule initiale
int ne = 30; // trop abrégé
int _score = 10; // underscore initial déconseillé
int $valeur = 5; // dollar déconseillé
3.4 Constantes — SCREAMING_SNAKE_CASE
static final) s'écrivent entièrement en majuscules, les mots séparés par des traits de soulignement.
// Correct
static final int TAILLE_MAX = 100;
static final double PI = 3.14159265;
static final String CODE_PAYS = "MA";
// À éviter
static final int tailleMax = 100; // lowerCamelCase pour une constante
static final int TAILLEMAX = 100; // sans séparateur, illisible
3.5 Packages — tout en minuscules
// Structure recommandée : domaine inversé + projet + module
package ma.um6p.cpge.algorithmes;
package com.entreprise.projet.utils;
// À éviter
package Ma.UM6P.CPGE; // majuscules
package monPackage; // pas de domaine organisationnel
3.6 Tableau récapitulatif
| Élément | Convention | Exemple |
|---|---|---|
| Classe / Interface | UpperCamelCase | GestionnaireDeComptes |
| Méthode | lowerCamelCase (verbe) | calculerMoyenne() |
| Variable | lowerCamelCase (nom) | nombreEleves |
| Constante | SCREAMING_SNAKE_CASE | TAILLE_MAX |
| Package | tout en minuscules | ma.um6p.cpge.algo |
| Enum (valeurs) | SCREAMING_SNAKE_CASE | JOUR_OUVRE |
4. Exercice
Identifier et corriger les erreurs de nommage
Le code ci-dessous contient plusieurs violations des règles d'identificateurs et des conventions de nommage Java. Repérez toutes les erreurs et proposez une version corrigée.
package MonApplication;
class etudiant {
static final int nb = 30;
String Nom-Etudiant;
double MoyenneGenerale;
boolean 2emeAnnee;
void Afficher-Infos() {
int class = 0;
System.out.println(Nom-Etudiant);
}
}
Travail demandé
- Lister chaque erreur avec sa justification (règle ou convention violée).
- Réécrire le code en respectant toutes les règles et conventions Java.
Erreurs identifiées
| # | Code fautif | Erreur | Correction |
|---|---|---|---|
| 1 | package MonApplication |
Convention : packages en minuscules | package monapplication |
| 2 | class etudiant |
Convention : classe en UpperCamelCase | class Etudiant |
| 3 | static final int nb |
Convention : constante en SCREAMING_SNAKE_CASE | static final int NB_MAX |
| 4 | String Nom-Etudiant |
Règle : le tiret - est interdit + majuscule initiale |
String nomEtudiant |
| 5 | double MoyenneGenerale |
Convention : variable en lowerCamelCase | double moyenneGenerale |
| 6 | boolean 2emeAnnee |
Règle : commence par un chiffre — invalide | boolean deuxiemeAnnee |
| 7 | void Afficher-Infos() |
Règle : tiret interdit + Convention : lowerCamelCase | void afficherInfos() |
| 8 | int class = 0 |
Règle : class est un mot-clé réservé |
int compteur = 0 |
Code corrigé
package monapplication;
class Etudiant {
static final int NB_MAX = 30;
String nomEtudiant;
double moyenneGenerale;
boolean deuxiemeAnnee;
void afficherInfos() {
int compteur = 0;
System.out.println(nomEtudiant);
}
}
L'essentiel en bref
Java dispose de 51 mots-clés réservés qui ne peuvent jamais servir d'identificateurs. Un identificateur valide commence par une lettre, $ ou _, ne contient que des caractères alphanumériques et est sensible à la casse. Les conventions de nommage Java reposent sur le CamelCase : UpperCamelCase pour les classes et interfaces, lowerCamelCase pour les méthodes et variables, SCREAMING_SNAKE_CASE pour les constantes, et tout en minuscules pour les packages. Ces conventions ne sont pas des obligations du compilateur, mais elles sont universellement respectées dans l'écosystème Java pour garantir la lisibilité et la maintenabilité du code.
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.