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