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

来源:8-10 Java 中的 static 使用之静态初始化块

石三春

2017-07-10 10:51

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


写回答 关注

3回答

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

    静态变量优先于对象加载

    石三春

    非常感谢!

    2017-07-10 12:38:12

    共 1 条回复 >

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

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

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


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

    静态优先于对象加载

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530646 学习 · 6091 问题

查看课程

相似问题