一道關於類載入機制的面試題

2022-06-14 08:33:08 字數 477 閱讀 5996

class a

public a()

}class b extends a

public b()

}public class hello

}執行結果:1a2b2b。

解析:當執行a ab = new b()時候,由於jvm事先就會知道b是繼承至a的,所以需要先載入a,如果不先載入a的話,無法完成子類b的載入!所以類的載入順序和構造器執行順序一致,先父類再子類!

注意:容易糊塗的地方是,以為b ab =new b();以為建立b所以先載入b之後再載入a,這種理解就錯誤了,因為對於物件的建立是從父類開始的!

拓展:建立物件時構造器的呼叫順序是:先初始化靜態成員,然後呼叫父類構造器,再初始化非靜態成員,最後呼叫自身構造器。

非靜態**塊的執行順序也是先父類,在子類!但是非靜態**塊執行順序在靜態**塊之後,構造器之前!靜態**塊只會執行一次(類載入時候執行),而非靜態**塊會多在建立物件時候多次執行!

一道面試題

一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...

一道面試題

前些時候在找工作,就在準備結束此次找工作歷程的時候,去了一家公司面試,去了之後技術經理直接帶到一台電腦旁,給了一張紙條,上面是這樣的題目 用c或c 來實現 1 建立一棵樹,該樹的深度是隨機的,每個節點的位元組點數是隨機的。2 給每個節點分配一段隨機大小的記憶體空間,給每個節點賦乙個隨機數。3 遍歷這...

一道面試題

如果n為偶數,則將它除以2,如果n為奇數,則將它加1或者減1。問對於乙個給定的n,怎樣才能用最少的步驟將它變到1。例如 n 61 n 60 n 2 30 n 2 15 n 16 n 2 8 n 2 4 n 2 2 n 2 1 public class myclass public static vo...