一个例子看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

 

posted @ 2013-07-24 09:25  CodeMeals  阅读(431)  评论(0)    收藏  举报
reliable statistics
Visitors