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.
Vérifier les 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.
Ouvrez le fichier
HelloJava.javadans l'éditeur WebIDE. Si vous avez terminé le laboratoire précédent, ce fichier devrait déjà exister dans votre répertoire~/project.Remplacez le code existant dans
HelloJava.javapar 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 statiquedefaultIntsans 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 statiquedefaultBooleanest déclarée et recevra sa valeur par défaut.static String defaultString;: Une variableStringstatiquedefaultStringest déclarée. Étant donné queStringest un type d'objet, sa valeur par défaut seranull.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 variableStringmyStringet lui assignons la valeurnull.System.out.println("My string value: " + myString);: Cela affiche la valeur demyString.if (myString == null): Il s'agit d'une instructionifqui vérifie si la variablemyStringest égale ànull. C'est la méthode standard pour vérifier si une référence d'objet ne pointe vers rien.
Enregistrez le fichier
HelloJava.java(Ctrl+S ou Cmd+S).Compilez le programme dans le terminal :
javac HelloJava.javaS'il n'y a pas d'erreurs, le fichier
HelloJava.classsera mis à jour.Exécutez le programme compilé :
java HelloJavaVous 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) etString(null). Elle confirme également que notre variablemyStringest biennullet que la conditionifl'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.
Tester 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 :
- 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. - 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.
Ouvrez le fichier
HelloJava.javadans l'éditeur WebIDE.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èreageet lui assigne la valeur 30.double price = 19.99;: Déclare une variable de typedoublepriceet lui assigne la valeur 19.99.boolean isJavaFun = true;: Déclare une variable booléenneisJavaFunet lui assigne la valeurtrue.char initial = 'J';: Déclare une variable de type caractèreinitialet lui assigne le caractère 'J'. Notez que les caractères utilisent des apostrophes simples.String greeting = "Hello, LabEx!";: Déclare une variableStringgreetinget 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énumberset l'initialise avec des valeurs. Un tableau est une collection d'éléments du même type de données.- La boucle
forparcourt le tableaunumberset affiche chaque élément.
Enregistrez le fichier
HelloJava.java.Compilez le programme dans le terminal :
javac HelloJava.javaExécutez le programme compilé :
java HelloJavaVous 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 5Cette 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.
Dans l'explorateur de fichiers de WebIDE à gauche, cliquez avec le bouton droit dans le répertoire
~/project, sélectionnez "Nouveau fichier" et tapezFieldExample.java.Ouvrez le fichier
FieldExample.javadans 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éthodemain. - Nous créons un objet
objde la classeFieldExamplepour 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
localIntavant 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.
- Nous déclarons des variables d'instance (
Enregistrez le fichier
FieldExample.java.Compilez le programme dans le terminal :
javac FieldExample.javaSi la compilation réussit (pas d'erreurs), le fichier
FieldExample.classsera créé.Exécutez le programme compilé :
java FieldExampleVous devriez voir une sortie similaire à celle - ci :
Instance int: 0 Instance String: null Instance boolean: false Static double: 0.0 Static char: Local int: 100Cette sortie confirme que les variables d'instance et statiques reçoivent des valeurs par défaut (0 pour
int,nullpourString,falsepourboolean, 0.0 pourdoubleet un caractère nul pourchar) 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.



