这代码的执行顺序是什么?先写给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);}
}