东方财富一面
类初始化之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类并没有被加载,
- 静态变量在连接的准备阶段被加载,之后在初始化阶段执行静态代码块;

浙公网安备 33010602011771号