Menu

Les variables en Java : déclaration, affectation et portée expliquées

Comment fonctionnent les variables en Java : les déclarer avec un type, leur affecter des valeurs, les règles de nommage, le mot-clé var, les constantes avec final, et les règles de portée qui déterminent où vit une variable.

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

Qu'est-ce qu'une variable

Une variable est une boîte nommée qui contient une valeur. En Java, chaque variable possède un type fixe - décidé au moment de sa déclaration - et ce type ne change jamais. C'est ce qui rend Java à typage statique : le compilateur connaît le type de chaque variable avant l'exécution du programme, et il refusera de compiler du code qui place une valeur du mauvais type dans une boîte.

Une déclaration comporte trois parties : le type, le nom et (généralement) une valeur initiale.

Lisez int age = 30; comme « crée un int nommé age et mets 30 dedans ». Le point-virgule termine l'instruction, exactement comme la page sur les commentaires l'a montré pour chaque instruction.

Déclarer maintenant, affecter plus tard

Vous pouvez séparer une déclaration de sa première affectation. Le type n'apparaît qu'une fois, à la déclaration ; ensuite, vous affectez avec seulement le nom et = :

Une règle qui piège les débutants : vous devez affecter une valeur à une variable locale avant de la lire. Le compilateur suit cela et rejette le code qui lit une variable locale non initialisée :

int score;
System.out.println(score);   // compile error: variable score might not have been initialized

Ce n'est pas une contrainte gênante mais une fonctionnalité : elle attrape toute une catégorie de bugs avant même que le programme ne s'exécute.

Règles et conventions de nommage

Java impose quelques règles strictes, puis ajoute des conventions par-dessus. Les règles : un nom peut contenir des lettres, des chiffres, _ et $, mais ne peut pas commencer par un chiffre, ne peut pas être un mot-clé réservé (comme int ou class) et est sensible à la casse (age et Age sont deux variables différentes).

Les conventions que tout le monde suit :

  • Les variables et les méthodes utilisent le camelCase : firstName, totalScore.
  • Les constantes utilisent le UPPER_SNAKE_CASE : MAX_USERS.
  • Les noms doivent décrire la valeur : count, pas c ; userEmail, pas x.

Des noms clairs ne sont pas de la décoration : ils déterminent la façon dont votre futur vous lira le code. totalPrice = itemCount * pricePerItem est explicite d'une manière que t = c * p ne sera jamais.

Sûreté de typage : la boîte conserve son type

Comme le type est verrouillé à la déclaration, vous ne pouvez pas placer une valeur du mauvais type dans une variable. Cela attrape les erreurs à la compilation :

int age = 30;
age = "thirty";   // compile error: incompatible types - String cannot become int

L'affectation entre types numériques suit les règles d'élargissement (widening) : un type plus petit s'écoule automatiquement vers un plus grand, mais pas l'inverse. Nous couvrirons cela en détail dans les pages sur les types de données et la conversion de types ; pour l'instant, sachez simplement que le compilateur veille.

Le mot-clé var

Depuis Java 10, vous pouvez écrire var à la place du type et laisser le compilateur l'inférer à partir de la valeur de droite :

var n'est pas du typage dynamique - name est tout autant un String que si vous aviez écrit String name, et vous ne pourrez toujours pas lui affecter un int par la suite. Cela ne fait qu'épargner de la frappe. Le hic : var a besoin d'un initialiseur pour inférer, donc var x; est illégal, et il ne fonctionne que pour les variables locales - jamais pour les champs, les paramètres de méthode ou les types de retour. Utilisez-le là où le type est évident d'après le côté droit ; écrivez le type explicitement quand cela apporte de la clarté.

Les constantes avec final

Lorsqu'une valeur ne doit jamais changer après avoir été définie, marquez-la final. Toute tentative de réaffectation devient une erreur de compilation :

final exprime une intention (« c'est une valeur fixe ») et laisse le compilateur la protéger pour vous. Faites-y appel chaque fois qu'une valeur est conceptuellement une constante - taux, limites, clés de configuration - afin qu'une réaffectation accidentelle soit attrapée plutôt que de partir en silence comme un bug.

La portée des variables

Une variable n'existe qu'à l'intérieur du bloc - le { ... } - où elle est déclarée, et elle meurt à l'accolade fermante. C'est sa portée. Une variable déclarée à l'intérieur d'une boucle ou d'un bloc if est invisible à l'extérieur :

i et square appartiennent tous deux à la boucle et disparaissent à sa fin ; total est déclarée dans le bloc externe, elle survit donc. La leçon pratique : déclarez chaque variable dans le plus petit bloc qui en a besoin. Une portée étroite signifie moins de noms qui se disputent votre attention et moins de risques de mal utiliser une valeur loin de l'endroit où elle a été définie.

Suite : les types de données

Chaque variable de cette page a commencé par un type - int, double, String, boolean. La page suivante détaille les types de données de Java : les huit types primitifs, la taille de chacun, la différence entre primitifs et objets, et quel type choisir selon les cas.

Questions fréquentes

Comment déclare-t-on une variable en Java ?

Écrivez le type, puis un nom, et affectez éventuellement une valeur : int age = 30;. Le type (int) est fixe pour toute la durée de vie de la variable ; le nom (age) est la façon de s'y référer. Vous pouvez séparer cela en une déclaration et une affectation ultérieure - int age; age = 30; -, mais vous devez affecter une valeur avant de lire une variable locale.

Qu'est-ce que le mot-clé var en Java ?

Depuis Java 10, var permet au compilateur d'inférer le type d'une variable locale à partir de la valeur que vous lui affectez : var name = "Ada"; fait de name un String. Le typage reste statique - le type est figé à la compilation, il n'est pas dynamique. var ne fonctionne qu'avec des variables locales munies d'un initialiseur, jamais avec des champs, des paramètres ou une déclaration non initialisée.

Comment crée-t-on une constante en Java ?

Ajoutez le mot-clé final : final double PI = 3.14159;. Une fois affectée, une variable final ne peut plus être réaffectée - le compilateur rejette toute tentative. Par convention, les constantes s'écrivent en UPPER_SNAKE_CASE afin de se distinguer des variables ordinaires.

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER