public class Demo1 {    static {        test = 1;//        System.out.println(test);    }    static int test;    public static void main(String[] args) {        System.out.println("Hello World!");    }}

其实上面的代码,编译器会自动编译为:

import java.io.PrintStream;public class Demo1{  static int test = 1;  public static void main(String[] args)  {    System.out.println("Hello World!");  }}

所以导致没有定义的,也可以先赋值。

注意问题:要有static的包围着,static会让编译器自动优化。