Comment vérifier si une variable est initialisée en Java

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si une variable est initialisée en Java. Nous allons explorer comment identifier les valeurs null et les valeurs par défaut pour différents types de données, ce qui est essentiel pour éviter les erreurs courantes telles que NullPointerException.

Grâce à des exemples pratiques, vous allez pratiquer la vérification des valeurs null et comprendre les valeurs par défaut attribuées aux types primitifs et aux objets. Vous apprendrez également à gérer les champs non initialisés au sein des classes pour garantir que vos programmes Java sont robustes et exempts d'erreurs.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java/BasicSyntaxGroup -.-> java/data_types("Data Types") java/BasicSyntaxGroup -.-> java/variables("Variables") java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/DataStructuresGroup -.-> java/arrays("Arrays") subgraph Lab Skills java/data_types -.-> lab-559996{{"Comment vérifier si une variable est initialisée en Java"}} java/variables -.-> lab-559996{{"Comment vérifier si une variable est initialisée en Java"}} java/if_else -.-> lab-559996{{"Comment vérifier si une variable est initialisée en Java"}} java/arrays -.-> lab-559996{{"Comment vérifier si une variable est initialisée en Java"}} end

Vérification des valeurs nulles ou par défaut

Dans cette étape, nous allons explorer comment vérifier les valeurs null ou les valeurs par défaut en Java. Comprendre comment gérer les valeurs null est crucial en programmation Java pour éviter des erreurs telles que NullPointerException. Il est également important de connaître les valeurs par défaut, car elles sont attribuées aux variables lorsqu'elles ne sont pas explicitement initialisées.

En Java, les types de données primitifs (comme int, boolean, double, etc.) ont des valeurs par défaut, tandis que les types d'objets (comme String, les tableaux, les classes personnalisées) ont une valeur par défaut de null.

Créons un simple programme Java pour démontrer la vérification des valeurs null et la compréhension des valeurs par défaut.

  1. Ouvrez le fichier HelloJava.java dans l'éditeur WebIDE. Si vous avez terminé le laboratoire précédent, ce fichier devrait déjà exister dans votre répertoire ~/project.

  2. Remplacez le code existant dans HelloJava.java par le suivant :

    public class HelloJava {
    
        static int defaultInt;
        static boolean defaultBoolean;
        static String defaultString;
    
        public static void main(String[] args) {
            System.out.println("Default int value: " + defaultInt);
            System.out.println("Default boolean value: " + defaultBoolean);
            System.out.println("Default String value: " + defaultString);
    
            String myString = null;
            System.out.println("My string value: " + myString);
    
            // Example of checking for null
            if (myString == null) {
                System.out.println("My string is null.");
            } else {
                System.out.println("My string is not null.");
            }
        }
    }

    Examinons les nouvelles parties de ce code :

    • static int defaultInt; : Nous déclarons une variable entière statique defaultInt sans l'initialiser. Étant donné qu'il s'agit d'une variable statique de type primitif, elle recevra sa valeur par défaut.
    • static boolean defaultBoolean; : De même, une variable booléenne statique defaultBoolean est déclarée et recevra sa valeur par défaut.
    • static String defaultString; : Une variable String statique defaultString est déclarée. Étant donné que String est un type d'objet, sa valeur par défaut sera null.
    • System.out.println("Default int value: " + defaultInt); : Cette ligne affiche la valeur par défaut de l'entier.
    • System.out.println("Default boolean value: " + defaultBoolean); : Cette ligne affiche la valeur par défaut du booléen.
    • System.out.println("Default String value: " + defaultString); : Cette ligne affiche la valeur par défaut de la chaîne de caractères.
    • String myString = null; : Nous déclarons explicitement une variable String myString et lui assignons la valeur null.
    • System.out.println("My string value: " + myString); : Cela affiche la valeur de myString.
    • if (myString == null) : Il s'agit d'une instruction if qui vérifie si la variable myString est égale à null. C'est la méthode standard pour vérifier si une référence d'objet ne pointe vers rien.
  3. Enregistrez le fichier HelloJava.java (Ctrl+S ou Cmd+S).

  4. Compilez le programme dans le terminal :

    javac HelloJava.java

    S'il n'y a pas d'erreurs, le fichier HelloJava.class sera mis à jour.

  5. Exécutez le programme compilé :

    java HelloJava

    Vous devriez voir une sortie similaire à celle-ci :

    Default int value: 0
    Default boolean value: false
    Default String value: null
    My string value: null
    My string is null.

    Cette sortie montre les valeurs par défaut pour int (0), boolean (false) et String (null). Elle confirme également que notre variable myString est bien null et que la condition if l'a correctement identifiée comme telle.

Comprendre les valeurs null et les valeurs par défaut est une étape fondamentale pour écrire un code Java robuste. Dans l'étape suivante, nous allons explorer les tests avec différents types de données.

Tests avec différents types de données

Dans cette étape, nous allons approfondir notre compréhension de Java en travaillant avec différents types de données. Java dispose de divers types de données pour stocker différents types d'informations, telles que des nombres, du texte et des valeurs vraies/fausses.

Il existe deux grandes catégories de types de données en Java :

  1. Types de données primitifs : Ce sont des types de données de base qui contiennent des valeurs simples. Parmi les exemples, on peut citer int (pour les nombres entiers), double (pour les nombres décimaux), boolean (pour les valeurs vraies/fausses), char (pour les caractères individuels), etc.
  2. Types de données de référence : Ce sont des types de données qui font référence à des objets. Parmi les exemples, on peut citer String, les tableaux et les classes que vous créez vous - même.

Modifions notre programme HelloJava.java pour utiliser et afficher différents types de données.

  1. Ouvrez le fichier HelloJava.java dans l'éditeur WebIDE.

  2. Remplacez le code existant par le suivant :

    public class HelloJava {
    
        public static void main(String[] args) {
            // Primitive Data Types
            int age = 30;
            double price = 19.99;
            boolean isJavaFun = true;
            char initial = 'J';
    
            System.out.println("Age: " + age);
            System.out.println("Price: " + price);
            System.out.println("Is Java fun? " + isJavaFun);
            System.out.println("Initial: " + initial);
    
            // Reference Data Type (String)
            String greeting = "Hello, LabEx!";
            System.out.println("Greeting: " + greeting);
    
            // Reference Data Type (Array)
            int[] numbers = {1, 2, 3, 4, 5};
            System.out.print("Numbers: ");
            for (int i = 0; i < numbers.length; i++) {
                System.out.print(numbers[i] + " ");
            }
            System.out.println(); // Print a newline at the end
        }
    }

    Examinons les nouvelles variables et le nouveau code :

    • int age = 30; : Déclare une variable entière age et lui assigne la valeur 30.
    • double price = 19.99; : Déclare une variable de type double price et lui assigne la valeur 19.99.
    • boolean isJavaFun = true; : Déclare une variable booléenne isJavaFun et lui assigne la valeur true.
    • char initial = 'J'; : Déclare une variable de type caractère initial et lui assigne le caractère 'J'. Notez que les caractères utilisent des apostrophes simples.
    • String greeting = "Hello, LabEx!"; : Déclare une variable String greeting et lui assigne une valeur textuelle. Notez que les chaînes de caractères utilisent des guillemets doubles.
    • int[] numbers = {1, 2, 3, 4, 5}; : Déclare un tableau d'entiers nommé numbers et l'initialise avec des valeurs. Un tableau est une collection d'éléments du même type de données.
    • La boucle for parcourt le tableau numbers et affiche chaque élément.
  3. Enregistrez le fichier HelloJava.java.

  4. Compilez le programme dans le terminal :

    javac HelloJava.java
  5. Exécutez le programme compilé :

    java HelloJava

    Vous devriez voir une sortie similaire à celle - ci :

    Age: 30
    Price: 19.99
    Is Java fun? true
    Initial: J
    Greeting: Hello, LabEx!
    Numbers: 1 2 3 4 5

    Cette sortie montre comment Java gère et affiche différents types de données primitifs et de référence. Vous pouvez constater que chaque variable contient et affiche la valeur qui lui a été assignée en fonction de son type.

Dans cette étape, vous avez pratiqué la déclaration et l'utilisation de divers types de données en Java. Comprendre les types de données est fondamental pour stocker et manipuler des informations dans vos programmes. Dans l'étape suivante, nous allons examiner la gestion des champs non initialisés.

Gérer les champs non initialisés

Dans cette étape, nous allons nous concentrer sur la compréhension de la façon dont Java gère les champs (variables au sein d'une classe) qui ne sont pas explicitement initialisés. Cela s'appuie sur notre discussion précédente concernant les valeurs par défaut.

En Java, les variables d'instance (champs appartenant à un objet d'une classe) et les variables statiques (champs appartenant à la classe elle - même) sont automatiquement affectées de valeurs par défaut si elles ne sont pas initialisées lors de leur déclaration. En revanche, les variables locales (variables déclarées à l'intérieur d'une méthode) ne reçoivent pas de valeurs par défaut et doivent être explicitement initialisées avant d'être utilisées.

Créons une nouvelle classe pour démontrer ce concept.

  1. Dans l'explorateur de fichiers de WebIDE à gauche, cliquez avec le bouton droit dans le répertoire ~/project, sélectionnez "Nouveau fichier" et tapez FieldExample.java.

  2. Ouvrez le fichier FieldExample.java dans l'éditeur et ajoutez le code suivant :

    public class FieldExample {
    
        // Instance variables (fields) - automatically get default values
        int instanceInt;
        String instanceString;
        boolean instanceBoolean;
    
        // Static variables (fields) - automatically get default values
        static double staticDouble;
        static char staticChar;
    
        public static void main(String[] args) {
            // Local variables - must be initialized before use
            int localInt;
            // String localString; // If uncommented and used without init, would cause a compile error
    
            // Creating an object of FieldExample to access instance variables
            FieldExample obj = new FieldExample();
    
            System.out.println("Instance int: " + obj.instanceInt);
            System.out.println("Instance String: " + obj.instanceString);
            System.out.println("Instance boolean: " + obj.instanceBoolean);
    
            System.out.println("Static double: " + staticDouble);
            System.out.println("Static char: " + staticChar);
    
            // Example of using a local variable after initialization
            localInt = 100;
            System.out.println("Local int: " + localInt);
    
            // The following line would cause a compile-time error if localString was uncommented
            // System.out.println("Local String: " + localString);
        }
    }

    Examinons le code :

    • Nous déclarons des variables d'instance (instanceInt, instanceString, instanceBoolean) et des variables statiques (staticDouble, staticChar) sans les initialiser. Java assignera automatiquement leurs valeurs par défaut.
    • Nous déclarons une variable locale localInt à l'intérieur de la méthode main.
    • Nous créons un objet obj de la classe FieldExample pour accéder aux variables d'instance. Les variables statiques peuvent être accédées directement en utilisant le nom de la classe (staticDouble, staticChar).
    • Nous affichons les valeurs des variables d'instance et statiques. Vous verrez leurs valeurs par défaut.
    • Nous initialisons explicitement la variable locale localInt avant de l'utiliser.
    • La ligne commentée // String localString; et la ligne ci - dessous montrent ce qui se passerait si vous essayiez d'utiliser une variable locale non initialisée – le compilateur Java vous donnerait une erreur.
  3. Enregistrez le fichier FieldExample.java.

  4. Compilez le programme dans le terminal :

    javac FieldExample.java

    Si la compilation réussit (pas d'erreurs), le fichier FieldExample.class sera créé.

  5. Exécutez le programme compilé :

    java FieldExample

    Vous devriez voir une sortie similaire à celle - ci :

    Instance int: 0
    Instance String: null
    Instance boolean: false
    Static double: 0.0
    Static char:
    Local int: 100

    Cette sortie confirme que les variables d'instance et statiques reçoivent des valeurs par défaut (0 pour int, null pour String, false pour boolean, 0.0 pour double et un caractère nul pour char) lorsqu'elles ne sont pas initialisées. Elle montre également qu'une variable locale doit être explicitement initialisée avant d'être utilisée.

Comprendre la différence dans la façon dont Java gère les variables d'instance/statiques non initialisées par rapport aux variables locales est crucial pour éviter les erreurs de programmation courantes.

Résumé

Dans ce laboratoire, nous avons appris à vérifier si une variable est initialisée en Java en comprenant les valeurs par défaut et en vérifiant la valeur null. Nous avons exploré comment les types de données primitifs reçoivent des valeurs par défaut lorsqu'ils ne sont pas explicitement initialisés, tandis que les types d'objets ont une valeur par défaut de null. Nous avons pratiqué la vérification de null en utilisant l'opérateur d'égalité (==) et avons démontré ceci avec un simple programme Java.

Nous avons également appris l'importance de gérer les champs non initialisés pour prévenir les erreurs potentielles et garantir la robustesse de nos applications Java. En comprenant les valeurs par défaut et en mettant en œuvre des vérifications appropriées pour null, nous pouvons écrire un code plus fiable et prévisible.