public class A{?int i1;??int i2;?static int i3; public A(){ i1 = 10; System.out.printf("1111\n"); } { i2 = 20; System.out.printf("2222\n");? }static{ i3 = 30; System.out.printf("3333\n");? } public static void main(String[] args) { A aa = new A(); }}
1 回答
已采納

綠洲仙人球
TA貢獻39條經(jīng)驗 獲得超47個贊
這是一個Java中代碼執(zhí)行順序的問題,就目前這個類而言,先執(zhí)行靜態(tài)塊(333),在執(zhí)行普通塊(222),最后執(zhí)行構(gòu)造函數(shù)(111),所以結(jié)果就是3/2/1。
具體解釋如下:
1、方法、塊對應(yīng)靜態(tài)和普通兩個級別,如果不產(chǎn)生實例,就只執(zhí)行靜態(tài)部分,所有關(guān)聯(lián)類中的靜態(tài)部分總先于非靜態(tài)部分執(zhí)行。
2、靜態(tài)部分中再分:靜態(tài)塊先于靜態(tài)方法。非靜態(tài)部分中構(gòu)造函數(shù)再分:父類先于子類。(非靜態(tài)部分中的方法,構(gòu)造函數(shù)也沒什么特別,構(gòu)造函數(shù)和普通函數(shù)的卻別就是super父類方法而已)
添加回答
舉報
0/150
提交
取消