问答详情
源自:8-10 Java 中的 static 使用之静态初始化块

为什么类的加载过程会是静态变量num3在最前面?

public class HelloWorld {

int num1;

int num2;

static int num3;

public HelloWorld(){

num1=89;

System.out.println("通过构造方法为变量num1赋值");

}

{

num2=90;

System.out.println("通过初始化块为变量num2赋值");

}

static{

num3=78;

System.out.println("通过静态初始化块为变量num3赋值");

}

public static void main(String[] args) {

HelloWorld hello2=new HelloWorld();

HelloWorld hello=new HelloWorld();

System.out.println(hello.num1);

System.out.println(hello.num2);

System.out.println(num3);

}

执行结果:

通过静态初始化块为变量num3赋值

通过初始化块为变量num2赋值

通过构造方法为变量num1赋值

通过初始化块为变量num2赋值

通过构造方法为变量num1赋值

89

90

78


提问者:石三春 2017-07-10 10:51

个回答

  • 双子小田田
    2017-07-10 11:32:50
    已采纳

    静态变量优先于对象加载

  • Justeasy
    2017-07-16 17:57:02

    java对象实例化时的顺序(静态成员变量、静态代码块、成员变量、方法块加载、构造函数加载)

      应该是优先构造方法准确点


  • 慕慕3717773
    2017-07-10 11:22:04

    静态优先于对象加载