阿里巴巴程序筆試題及答案

時(shí)間:2022-06-25 03:04:46 筆試 我要投稿
  • 相關(guān)推薦

阿里巴巴程序筆試題及答案

  【問(wèn)題】如果類(lèi)A和類(lèi)B中有靜態(tài)變量,靜態(tài)語(yǔ)句塊,非靜態(tài)變量,非靜態(tài)語(yǔ)句塊,構造函數,靜態(tài)方法,非靜態(tài)方法,同時(shí)類(lèi)A繼承類(lèi)B,請問(wèn)當實(shí)例化A時(shí),類(lèi)內部的加載順序是什么?

阿里巴巴程序筆試題及答案

  【解析】測試代碼如下:

  Class B:

  public class B{//靜態(tài)變量static int i=1;//靜態(tài)語(yǔ)句塊static {System.out.println("Class B1:static blocks"+i);}//非靜態(tài)變量int j=1;//靜態(tài)語(yǔ)句塊static{i++;System.out.println("Class B2:static blocks"+i);}//構造函數public B(){i++;j++;System.out.println("constructor B: "+"i="+i+",j="+j);}//非靜態(tài)語(yǔ)句塊{ i++; j++; System.out.println("Class B:common blocks"+"i="+i+",j="+j);}//非靜態(tài)方法public void bDisplay(){i++;System.out.println("Class B:static void bDisplay():"+"i="+i+",j="+j);return ;}//靜態(tài)方法public static void bTest(){i++;System.out.println("Class B:static void bTest():"+"i="+i);return ;}}

  Class A:

  public class A extends B{//靜態(tài)變量static int i=1;//靜態(tài)語(yǔ)句塊static {System.out.println("Class A1:static blocks"+i);}//非靜態(tài)變量int j=1;//靜態(tài)語(yǔ)句塊static{i++;System.out.println("Class A2:static blocks"+i);}//構造函數public A(){ super();i++;j++;System.out.println("constructor A: "+"i="+i+",j="+j);}//非靜態(tài)語(yǔ)句塊{ i++; j++; System.out.println("Class A:common blocks"+"i="+i+",j="+j);}//非靜態(tài)方法public void aDisplay(){i++;System.out.println("Class A:static void aDisplay():"+"i="+i+",j="+j);return ;}//靜態(tài)方法public static void aTest(){i++;System.out.println("Class A:static void aTest():"+"i="+i);return ;}}

  Class ClassLoading :

  public class ClassLoading {public static void main (String args[]) {A a=new A();a.aDisplay();}}

  程序運行結果如圖:

  通過(guò)上述示圖,我們可以比較清晰的看出java類(lèi)的整個(gè)加載過(guò)程:

  1.若要加載類(lèi)A,則先加載執行其父類(lèi)B(Object)的靜態(tài)變量以及靜態(tài)語(yǔ)句塊(執行先后順序按排列的先后順序)。

  2.然后再加載執行類(lèi)A的靜態(tài)變量以及靜態(tài)語(yǔ)句塊。(并且1、2步驟只會(huì )執行1次)

  3.若需實(shí)例化類(lèi)A,則先調用其父類(lèi)B的構造函數,并且在調用其父類(lèi)B的構造函數前,依次先調用父類(lèi)B中的非靜態(tài)變量及非靜態(tài)語(yǔ)句塊.最后再調用父類(lèi)B中的構造函數初始化。

  4.然后再依次調用類(lèi)A中的非靜態(tài)變量及非靜態(tài)語(yǔ)句塊.最后調用A中的構造函數初始化。( 并且3、4步驟可以重復執行)

  5.而對于靜態(tài)方法和非靜態(tài)方法都是被動(dòng)調用,即系統不會(huì )自動(dòng)調用執行,所以用戶(hù)沒(méi)有調用時(shí)都不執行,主要區別在于靜態(tài)方法可以直接用類(lèi)名直接調用(實(shí)例化對象也可以),而非靜態(tài)方法只能先實(shí)例化對象后才能調用。

【阿里巴巴程序筆試題及答案】相關(guān)文章:

32道java程序員面試題及答案07-13

阿里巴巴 java 面試題06-28

c語(yǔ)言試題及答案07-03

唐宋文學(xué)試題及答案06-28

華為筆試題硬件筆經(jīng)07-11

阿里巴巴實(shí)習生面試題07-04

誰(shuí)有比較全面的Java程序員面試題(附答案)?07-13

程序員面試題精選07-12

消防考試試題與答案11-12

dba面試題及答案06-28

99久久精品免费看国产一区二区三区|baoyu135国产精品t|40分钟97精品国产最大网站|久久综合丝袜日本网|欧美videosdesexo肥婆