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

Sono inizializzate le variabili statiche nel costruttore di default di Java?

Le variabili o file statici appartengono alla classe, vengono caricati nella memoria insieme alla classe. Puoi chiamarli senza creare un oggetto (usa il nome della classe come riferimento). C'è solo una copia del campo statico disponibile in tutta la classe, quindi il valore del campo statico è lo stesso in tutti gli oggetti. Puoi definire un campo statico usando la parola chiave static.

示例

public class Sample{
   static int num = 50;
   public void demo(){
      System.out.println("Valore di num nel metodo demo " + Sample.num);
   }
   public static void main(String args[]){
      System.out.println("Valore di num nel metodo main " + Sample.num);
      new Sample().demo();
   }
}

输出结果

Valore di num nel metodo main 50
Valore di num nel metodo demo 50

Inizializzazione delle variabili statiche

Se dichiari variabili statiche in una classe e non le inizializzi, come se fossero variabili d'istanza, il compilatore le inizializzerà con i valori di default nel costruttore di default.

示例

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);
   }
}

输出结果

0
null
0.0
false

Inizializzazione delle variabili statiche

Ma se dichiari variabili d'istanza statiche e il compilatore Java finale non le inizializza nel costruttore di default, è necessario inizializzare le variabili statiche e final. Se non compili, verrà generato un errore.

示例

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);
   }
}

Errore di compilazione

Sample.java:2: errore: variabile num non inizializzata nel costruttore di default
   final static int num;
^
Sample.java:3: errore: variabile str non inizializzata nel costruttore di default
   final static String str;
^
Sample.java:4: errore: variabile fl non inizializzata nel costruttore di default
   final static float fl;
^
Sample.java:5: error: variable bool not initialized in the default constructor
   final static boolean bool;
^
4 errors

您不能从构造函数向最终变量赋值-

示例

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

输出结果

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

初始化除声明语句以外的静态最终变量的唯一方法是静态块。

静块是使用静态关键字的代码块。通常,这些用于初始化静态成员。JVM在类加载时在main方法之前执行静态块。

示例

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);
   }
}

输出结果

100
krishna
100.25
true
Ti potrebbe interessare