为了账号安全,请及时绑定邮箱和手机立即绑定

为什么类的加载过程会是静态变量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


正在回答

3 回答

静态变量优先于对象加载

0 回复 有任何疑惑可以回复我~
#1

石三春 提问者

非常感谢!
2017-07-10 回复 有任何疑惑可以回复我~

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

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


0 回复 有任何疑惑可以回复我~

静态优先于对象加载

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信