天天看點

【Java學習筆記】Class對象【2】類字面常量

類字面常量

生成Class對象的引用

eg:

Fancy.class

類加載分為3個階段,加載,連結,最後一個階段是初始化。

使用字面量常量獲得Class對象的引用時不會初始化該類。

初始化被延遲到通路靜态方法或非常數靜态域時才執行

class Initiable{
    static final int staticFinal = ;//static fianl 修飾的編譯期常量無需初始化就可以通路
    //staticFianl2 不是編譯期常量
    //static final int staticFianl2 = ClassInitialzation.rand.nextInt(1000);
    //通路staticFianl2 會初始化
    static{
        System.out.println("初始化1");
    }
}
class Initiable2{
    static final int staticFinal = ;
    static{
        System.out.println("初始化2");
    }
}


public class ClassInitialzation {

    public static void main(String[] args) {
        Class initiableClass = Initiable.class;//
        System.out.println(Initiable.staticFinal);
        try {
            Class.forName("Initiable2");//立即進行了初始化
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        System.out.println(Initiable2.staticFinal);
    }

}

}
           

輸出

47

初始化2

20

編譯期常量:在編譯期間就可以确認值的常量