Variables en Java : Guide Complet

Apprenez à déclarer, initialiser et utiliser les variables Java avec les différents types de données

Qu'est-ce qu'une variable en Java ?

Une variable Java est un espace mémoire qui permet de stocker une valeur (value) dans un programme Java. Chaque variable possède un type qui détermine le type de données qu'elle peut contenir et un nom (identifier) pour y accéder dans le code Java.

En Java, les variables sont fortement typées : vous devez déclarer (declare) le type de chaque variable avant de l'utiliser. Cette approche garantit la sécurité du code Java et permet au compilateur de détecter les erreurs (error) avant l'exécution du programme (program). Apprendre à utiliser les variables est essentiel pour tout développeur Java débutant ou confirmé.

Le langage Java propose plusieurs types de variables pour répondre à différents besoins : des types primitifs comme int, double, boolean et char, ainsi que des types objets comme String. Ce guide Java vous explique tout ce que vous devez savoir sur les variables.

Déclaration de variables Java

Pour déclarer (declare) une variable en Java, vous devez spécifier son type suivi de son nom. La syntaxe (syntax) de déclaration (declaration) d'une variable Java est la suivante :

// Syntaxe de déclaration d'une variable Java
type nomVariable;

// Exemples de déclaration
int age;
double salaire;
String nom;
boolean actif;

Initialisation d'une variable

Vous pouvez initialiser une variable lors de sa déclaration ou plus tard dans le code. L'initialisation consiste à assigner une valeur (value) à la variable :

// Déclaration puis initialisation
int age;
age = 25;

// Déclaration et initialisation en une ligne
int nombre = 42;
double prix = 19.99;
String message = "Hello";
boolean estValide = true;

Types de variables en Java

Le langage distingue trois catégories principales selon leur portée et leur durée de vie. Comprendre ces types est essentiel pour écrire du code propre et efficace :

1. Variables locales

Les variables locales sont déclarées (declared) à l'intérieur d'une méthode (method), d'un constructeur (constructor) ou d'un bloc de code. Elles n'existent que pendant l'exécution de ce bloc :

public class Exemple {
    public void calculer() {
        // Variable locale - visible uniquement dans cette méthode
        int resultat = 0;
        double taux = 0.19;

        for (int i = 0; i < 10; i++) {
            // i est aussi une variable locale au bloc for
            resultat += i;
        }

        System.out.println(resultat);
    }
}

2. Variables d'instance

Les variables d'instance (instance variables) sont déclarées dans une class mais en dehors de toute méthode. Chaque objet (object) de la classe possède sa propre copie :

public class Personne {
    // Variables d'instance - chaque objet a ses propres valeurs
    String nom;
    int age;
    double taille;
    boolean estMajeur;

    public void afficher() {
        System.out.println("Nom: " + nom + ", Age: " + age);
    }
}

3. Variables de classe (static)

Les variables static (variables de classe) sont partagées par toutes les instances d'une classe. Elles sont déclarées avec le mot-clé static :

public class Compteur {
    // Variable static - partagée par tous les objets
    static int nombreInstances = 0;

    // Variable d'instance
    int id;

    public Compteur() {
        nombreInstances++;  // Incrémente la variable static
        this.id = nombreInstances;
    }

    public static void main(String[] args) {
        Compteur c1 = new Compteur();
        Compteur c2 = new Compteur();

        System.out.println("Nombre d'instances: " + nombreInstances); // 2
    }
}

Types de données primitifs en Java

Le langage propose 8 types primitifs (primitive types) pour stocker les données (data) de base. Ces types de données sont les plus efficaces en termes de mémoire et de performance. Chaque type primitif a une taille fixe et une plage de valeurs (values) définie :

Types entiers

Type Taille Plage de valeurs Exemple
byte 1 byte -128 à 127 byte b = 100;
short 2 bytes -32 768 à 32 767 short s = 1000;
int 4 bytes -2³¹ à 2³¹-1 int i = 100000;
long 8 bytes -2⁶³ à 2⁶³-1 long l = 100000L;
// Exemples de types entiers en Java
byte petitNombre = 127;
short nombreCourt = 32000;
int age = 25;
int population = 1000000;
long distanceEtoile = 9460730472580800L;  // Suffixe L pour long

Types décimaux (floating-point)

Type Taille Précision Exemple
float 4 bytes ~7 chiffres float f = 3.14f;
double 8 bytes ~15 chiffres double d = 3.14159;
// Exemples de types décimaux en Java
float pi = 3.14159f;        // Suffixe f obligatoire pour float
double prix = 19.99;
double tauxInteret = 0.05;
double resultatCalcul = 123.456789012345;

Type caractère (char)

Le type char stocke un seul caractère (character) Unicode sur 2 bytes :

// Exemples de type char en Java
char lettre = 'A';
char chiffre = '7';
char symbole = '@';
char unicode = '\u0041';  // Caractère 'A' en Unicode

Type booléen (boolean)

Le type boolean ne peut avoir que deux valeurs : true ou false :

// Exemples de type boolean en Java
boolean estActif = true;
boolean aTermine = false;
boolean estMajeur = age >= 18;
boolean estValide = nom != null && !nom.isEmpty();

Type String en Java

La classe String en Java n'est pas un type primitif mais une classe (class) très utilisée pour manipuler les chaînes de caractères (strings). En Java, les String sont des objets immuables, ce qui signifie que leur valeur (value) ne peut pas être modifiée après création :

// Déclaration de variables String
String nom = "Jean";
String message = "Hello World";
String vide = "";
String texte = new String("Exemple");

// Concaténation de String
String prenom = "Marie";
String nomComplet = prenom + " " + nom;

System.out.println(nomComplet);  // Marie Jean

Variables final en Java

Le mot-clé final permet de déclarer une constante dont la valeur (value) ne peut plus être modifiée après initialisation. Les constantes sont très utilisées pour définir des valeurs fixes dans vos programmes :

public class Constantes {
    // Constantes de classe (static final)
    public static final double PI = 3.14159265359;
    public static final int MAX_UTILISATEURS = 100;
    public static final String VERSION = "2.0";

    public void exemple() {
        // Variable finale locale
        final int TAILLE_MAX = 50;

        // TAILLE_MAX = 60;  // Erreur de compilation !

        final double taux = calculerTaux();
        System.out.println("Taux: " + taux);
    }

    private double calculerTaux() {
        return 0.15;
    }
}

Convention Java : Les constantes (static final) sont écrites en MAJUSCULES avec des underscores pour séparer les mots : MAX_VALUE, DEFAULT_SIZE.

Règles de nommage des variables Java

Le langage impose des règles strictes pour les noms (names) des identifiants. Respecter ces conventions rend votre code plus lisible et maintenable :

  • Commence par une lettre, $ ou _
  • Peut contenir des lettres, chiffres (numbers), $ et _
  • Sensible à la casse (ageAgeAGE)
  • Ne peut pas être un mot réservé (reserved) Java
  • Pas de limite de longueur
// Noms de variables valides
int age;
int _compteur;
int $prix;
int nombreUtilisateurs;
int nombre2;

// Noms de variables INVALIDES
// int 2nombre;      // Ne peut pas commencer par un chiffre
// int mon-age;      // Le tiret n'est pas autorisé
// int class;        // class est un mot réservé Java
// int public;       // public est un mot réservé Java

Conventions de nommage

  • camelCase pour les variables : nombreUtilisateurs, prixTotal
  • PascalCase pour les classes : Personne, CompteBancaire
  • SCREAMING_SNAKE_CASE pour les constantes : MAX_SIZE, PI

Valeurs par défaut des variables Java

Les champs d'instance et static ont des valeurs par défaut (default) si non initialisés. Les locales n'ont pas de valeur par défaut et doivent être initialisées avant utilisation :

Type Valeur par défaut
byte, short, int, long0
float, double0.0
char'\u0000'
booleanfalse
Objets (String, etc.)null
public class ValeursDefaut {
    // Variables d'instance avec valeurs par défaut
    int entier;           // 0
    double decimal;       // 0.0
    boolean flag;         // false
    String texte;         // null

    public static void main(String[] args) {
        ValeursDefaut obj = new ValeursDefaut();

        System.out.println("int: " + obj.entier);       // 0
        System.out.println("double: " + obj.decimal);   // 0.0
        System.out.println("boolean: " + obj.flag);     // false
        System.out.println("String: " + obj.texte);     // null
    }
}

Portée des variables Java (scope)

La portée (scope) définit où une donnée est visible (visible) et accessible (access) dans le code. Comprendre ce concept est crucial :

public class PorteeVariables {
    // Variable de classe - accessible partout dans la classe
    static int compteurGlobal = 0;

    // Variable d'instance - accessible dans toute l'instance
    private int id;

    public void methode() {
        // Variable locale - accessible uniquement dans cette méthode
        int x = 10;

        if (x > 5) {
            // Variable de bloc - accessible uniquement dans ce if
            int y = 20;
            System.out.println(x + y);  // OK
        }
        // System.out.println(y);  // Erreur ! y n'est plus visible
    }
}

Modificateurs d'accès des variables Java

Le langage propose quatre niveaux de visibilité pour les champs d'instance et de classe. Ces modificateurs d'accès contrôlent qui peut accéder (access) aux données :

  • public : accessible de partout
  • protected : accessible dans le package et les sous-classes
  • (défaut) : accessible uniquement dans le même package
  • private : accessible uniquement dans la classe
public class Utilisateur {
    public String nom;              // Accessible partout
    protected int age;              // Package + sous-classes
    String email;                   // Package uniquement (défaut)
    private String motDePasse;      // Classe uniquement

    // Bonne pratique : variables private + getters/setters
    private double solde;

    public double getSolde() {
        return this.solde;
    }

    public void setSolde(double solde) {
        if (solde >= 0) {
            this.solde = solde;
        }
    }
}

Exemple complet : programme Java avec variables

Voici un exemple (example) complet montrant l'utilisation des différents types dans un programme concret :

public class GestionEtudiants {
    // Constante static final
    public static final int AGE_MINIMUM = 16;

    // Variable static
    private static int nombreEtudiants = 0;

    // Variables d'instance
    private String nom;
    private int age;
    private double moyenne;
    private boolean estInscrit;

    // Constructeur
    public GestionEtudiants(String nom, int age) {
        this.nom = nom;
        this.age = age;
        this.moyenne = 0.0;
        this.estInscrit = false;
        nombreEtudiants++;
    }

    // Méthode avec variables locales
    public void calculerMoyenne(double[] notes) {
        if (notes == null || notes.length == 0) {
            return;
        }

        double somme = 0.0;
        int count = notes.length;

        for (int i = 0; i < count; i++) {
            somme += notes[i];
        }

        this.moyenne = somme / count;
    }

    public static void main(String[] args) {
        // Création d'objets
        GestionEtudiants etudiant1 = new GestionEtudiants("Alice", 20);
        GestionEtudiants etudiant2 = new GestionEtudiants("Bob", 22);

        // Utilisation des variables
        double[] notesAlice = {15.5, 14.0, 16.5, 18.0};
        etudiant1.calculerMoyenne(notesAlice);

        System.out.println("Nombre d'étudiants: " + nombreEtudiants);
        System.out.println("Moyenne Alice: " + etudiant1.moyenne);
    }
}

Bonnes pratiques pour les variables Java

Voici les bonnes pratiques à suivre pour déclarer et utiliser vos données efficacement :

  • Noms explicites : nombreUtilisateurs plutôt que n
  • Déclarer au plus proche : déclarez les variables là où vous les utilisez
  • Privilégier final : utilisez final quand la valeur ne change pas
  • Encapsulation : préférez private avec getters/setters
  • Initialiser explicitement : ne comptez pas sur les valeurs par défaut
  • Éviter les variables globales : limitez l'usage des variables static

Questions fréquentes sur les variables Java

Comment déclarer une variable en Java ?

Pour déclarer une variable Java, utilisez la syntaxe : type nom = valeur;. Par exemple : int age = 25; ou String nom = "Jean";.

Quelle est la différence entre int et Integer ?

int est un type primitif, tandis que Integer est la classe wrapper correspondante. Utilisez le primitif pour les calculs simples et le wrapper quand vous avez besoin d'un objet (collections, null).

Quand utiliser static en Java ?

Utilisez static quand une variable doit être partagée entre toutes les instances d'une classe. Les constantes (static final) et les compteurs sont des cas d'usage courants.

Ressources pour apprendre Java

Pour approfondir vos connaissances sur les variables Java et le langage Java en général :

Conclusion

Les variables sont fondamentales pour stocker et manipuler des données (data) dans vos programmes. Maîtriser les différents types de données (int, double, boolean, char, String), comprendre la portée (scope) et utiliser correctement les modificateurs (public, private, static, final) vous permettra d'écrire du code propre et performant.

Maintenant que vous maîtrisez ces concepts, vous pouvez passer aux opérateurs pour apprendre à effectuer des calculs et des comparaisons.