page contents

3 有关静态代码块的加载问题

Pack 发布于 2019-12-27 15:41
阅读 1966
收藏 0

静态代码块不是在类加载的时候就执行了,并且只执行一次吗?


类如下:

public class ClassLoaderStudy {


    static { System.out.println("外部静态代码块"); }


    public static final String str = "外部静态字段";


}

执行

public static void main(String[] args) {

    System.out.println(ClassLoaderStudy.str);

}

输出为:

外部静态字段


静态初始化代码块里的内容并没有执行,这是为什么?都调用了这个类的字段,不可能还没有加载类啊

最佳答案 2020-03-24 17:15

47
Pack
Pack

常量值存储在JVM内存中的静态常量池中,在类不加载时即可访问。

请先 登录 后评论