一个例子看java静变量的初始化
package typeinfo; import java.util.Random; class Initable { static final int staticFinal = 47;//编译期常量 static final int staticFinal2 = ClassInitialization.random.nextInt(200);//运行时常量 static { System.out.println("Init Initable"); } } class Initable2{ static int staticNonFinal = 247; static{ System.out.println("Init Initable2"); } } class Initable3{ static int staticNonFinal = 347; static{ System.out.println("Init Initable3 "); } } public class ClassInitialization { public static Random random = new Random(47); public static void main(String[] args) throws ClassNotFoundException { Class initable = Initable.class; System.out.println("-----------1-----------"); System.out.println(Initable.staticFinal);//访问编译期常量不需要初始化 System.out.println("-----------2-----------"); System.out.println(Initable.staticFinal2);//访问运行时static final常量需要初始化 System.out.println("-----------3-----------");//static 非final常量需要初始化 System.out.println(Initable2.staticNonFinal); System.out.println("-----------4-----------"); Class initable3 = Class.forName("typeinfo.Initable3");//Class.forName会调用初始化 System.out.println("-----------5-----------"); System.out.println(Initable3.staticNonFinal); } }
运行结果:
-----------1----------- 47 -----------2----------- Init Initable 58 -----------3----------- Init Initable2 247 -----------4----------- Init Initable3 -----------5----------- 347

浙公网安备 33010602011771号