English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Est-ce que les variables statiques sont initialisées dans le constructeur par défaut de Java ?

Fichier statique/Les variables appartiennent à la classe, elles seront chargées en mémoire avec la classe. Vous pouvez les appeler sans créer d'objet (en utilisant le nom de la classe comme référence). Il n'y a qu'une seule copie du champ statique disponible dans toute la classe, c'est-à-dire, la valeur du champ statique est la même pour tous les objets. Vous pouvez définir un champ statique en utilisant le mot-clé static.

Example

public class Sample{
   static int num = 50;
   public void demo(){
      System.out.println("Valeur de num dans la méthode demo ");+ Sample.num);
   }
   public static void main(String args[]){
      System.out.println("Valeur de num dans la méthode main ");+ Sample.num);
      new Sample().demo();
   }
}

Output Result

Valeur de num dans la méthode main 50
Valeur de num dans la méthode demo 50

Initialisation des variables statiques

Si vous déclarez une variable statique dans une classe, et si elle n'est pas initialisée, comme pour une variable d'instance, le compilateur l'initialisera avec la valeur par défaut dans le constructeur par défaut.

Example

public class Sample{
   static int num;
   static String str;
   static float fl;
   static boolean bool;
   public static void main(String args[]){
      System.out.println(Sample.num);
      System.out.println(Sample.str);
      System.out.println(Sample.fl);
      System.out.println(Sample.bool);
   }
}

Output Result

0
null
0.0
false

Initialisation des variables statiques

Cependant, si vous déclarez une variable d'instance statique, et que le compilateur Java ne l'initialisera pas dans le constructeur par défaut, vous devez initialiser les variables statiques et finales. Si vous ne compilez pas, une erreur sera générée.

Example

public class Sample{
   final static int num;
   final static String str;
   final static float fl;
   final static boolean bool;
   public static void main(String args[]){
      System.out.println(Sample.num);
      System.out.println(Sample.str);
      System.out.println(Sample.fl);
      System.out.println(Sample.bool);
   }
}

Erreur à la compilation

Sample.java:2: erreur : variable num non initialisée dans le constructeur par défaut
   final static int num;
^
Sample.java:3: erreur : variable str non initialisée dans le constructeur par défaut
   final static String str;
^
Sample.java:4: error: variable fl not initialized in the default constructor
   final static float fl;
^
Sample.java:5: error: variable bool not initialized in the default constructor
   final static boolean bool;
^
4 errors

You cannot assign a value to a final variable from a constructor-

Example

public class Sample{
   final static int num;
   Sample(){
      num =;100;
   }
}

Output Result

Sample.java:4: error: cannot assign a value to final variable num
   num =;100;
^
1 error

The only way to initialize a static final variable other than the declaration statement is through a static block.

AStatic blockIs a block of code using the static keyword. Typically, these are used to initialize static members. The JVM executes static blocks before the main method during class loading.

Example

public class Sample{
   final static int num;
   final static String str;
   final static float fl;
   final static boolean bool;
   static{
      num =;100;
      str = "krishna";
      fl =;100.25f;
      bool = true;
   }
   public static void main(String args[]){
      System.out.println(Sample.num);
      System.out.println(Sample.str);
      System.out.println(Sample.fl);
      System.out.println(Sample.bool);
   }
}

Output Result

100
krishna
100.25
true
Vous pourriez aussi aimer