东方财富一面

类初始化之static字段的访问

  • 当访问一个静态字段时,只有直接定义该字段的类才会被初始化。

    public class Main {
    
        public static void main(String[] args) {
            System.out.println(SubClass.value);
        }
    }
    
    class  SSClass {
    
        static {
            System.out.println("SSClass init");
        }
    }
    
    class SuperClass extends SSClass {
        static {
            System.out.println("SuperClass init");
        }
        public static Integer value = 123;
    
        public SuperClass() {
            System.out.println("SuperClass Constructor init");
        }
    
    }
    class SubClass extends SuperClass {
    
        static {
            System.out.println("SubClass init");
        }
        static int a;
        public SubClass() {
            System.out.println("SubClass Constructor init");
        }
    }
    

​ 执行结果:

SSClass init
SuperClass init
123
  • SubClass类并没有被加载,
  • 静态变量在连接的准备阶段被加载,之后在初始化阶段执行静态代码块;
posted @ 2025-06-28 19:56  烟雨断桥  阅读(6)  评论(0)    收藏  举报