常量的本質含義

Talk is Cheap,Show You The Code!

package com.fskj.classloader;

//常量在編譯階段會存入到調用這個常量的方法所在的類的常量池中
//本質上調用類並沒有直接引用到定義常量的類,因此並不會出發定義常量類的初始化。
public class ClassLoaderTest {
    public static void main(String[] args) {
        System.out.println(Child.str1);
    }
}

class Parent{
    static {
        System.out.println("This is Parent static block!");
    }
    public static String str1 = "i am parent str1";
}

class Child extends Parent{
    static {
        System.out.println("This is Child static block!");
    }
    public static final String str1 = "i am child str1";
}

這是javac編譯之後反編譯的代碼,灰常神奇!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章