public class test { static { a = 5; }// 1 static { System.out.println(a); }// 2 static int a; static { System.out.println(a); a = 6; System.out.println(a); } public static void main(String[] args) { } } 1:不会产生错误 2:产生错误 jvm加载顺序:先静态变量,再静态方法。 out是System的静态变量,需要先加载,所以2产生了错误。