這代碼的執(zhí)行順序是什么?先寫給num1賦值,然后給num2賦值,最后給num3賦值,可是執(zhí)行結(jié)果卻是倒過來的?
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("通過靜態(tài)初始化塊給靜態(tài)變量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);}
}
2017-01-14
靜態(tài)代碼塊在非靜態(tài)代碼塊之前執(zhí)行(靜態(tài)代碼塊-->非靜態(tài)代碼塊-->構造函數(shù))。
2017-01-14
程序運行時靜態(tài)初始化塊最先被執(zhí)行,然后執(zhí)行普通初始化塊,最后才執(zhí)行構造方法