静态代码块是在类加载的时候执行的,而静态变量的初始化也是在类加载时进行的。因此,静态代码块中可以给还没有被声明的静态变量赋值。实际上,在JVM的类加载机制中,类的初始化分为三个步骤,其中第二步就是给类的静态变量赋初始值,而静态代码块就是在这一步骤中执行的。因此,当静态代码块执行时,静态变量已经被赋值,可以被直接使用。