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

这代码的执行顺序是什么?先写给num1赋值,然后给num2赋值,最后给num3赋值,可是执行结果却是倒过来的?

package demo;

public class Test{

int num1;

int num2;

static int num3;

public Test(){

num1=91;

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

    }

{num2=74;

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

}

static{

num3=83;

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

}


public static void main(String[] args){

Test hi=new Test();

System.out.println("num1= "+hi.num1);

    System.out.println("num2= "+hi.num2);

    System.out.println("num3= "+num3);

    hi.num1=18;

    hi.num2=33;

    num3=88;

    System.out.println("赋值后"+"num1= "+hi.num1+" num2= "+hi.num2+" num3= "+num3);

    Test hi2=new Test();

    System.out.println("初始化后"+"num1= "+hi2.num1+" num2= "+hi2.num2+" num3= "+num3);}

}


正在回答

2 回答

静态代码块在非静态代码块之前执行(静态代码块-->非静态代码块-->构造函数)。

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

慕粉0915048541 提问者

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

程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法

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

举报

0/150
提交
取消

这代码的执行顺序是什么?先写给num1赋值,然后给num2赋值,最后给num3赋值,可是执行结果却是倒过来的?

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