大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 2020年Java基礎面試題及答案匯總

2020年Java基礎面試題及答案匯總

更新時間:2020-04-13 16:43:34 來源:動力節點 瀏覽3317次


  什么情況下會觸發類的初始化?


  (1)、遇到 new, getstatic, putstatic, invokestatic 這4條字節碼指令。


  (2)、使用 java.lang.reflect 包的方法對類進行反射調用。


  (3)、初始化一個類的時候,如果發現其父類還沒有進行過初始化,則先初始化其父類(注意:


  如果是接口的話,則不要求初始化父類)。


  (4)、當虛擬機啟動時,用戶需要指定一個要執行的主類(包含 main()方法的那個類),虛擬機會先初始化這個主類。


  (5)、當使用JDK 1.7 的動態語言支持時,如果一個 java.lang.invoke.MethodHandle 實例最后的解析結果 REF_getstatic, REF_putstatic, REF_invokeStatic的方法句柄,并且這個方法句柄所對應的類沒有進行過初始化,則先觸發其初始化。


  外加幾種不會初始化的例子:


  (1)、同類子類引用父類的靜態字段,不會導致子類初始化。至于是否會觸發子類的加載和驗證,則取決于虛擬機的具體實現。


  (2)、通過數組定義來引用類,也不會觸發類的初始化。例如下面這個語句:


  1Animal[] a = new Animao[10];


  并不會觸發 Animal 類的初始化。


  (3)、引用一個類的常量也不會觸發初始化。


  談談你對解析與分派的認識。


  1.方法在程序真正運行之前就有一個可確定的調用版本,并且這個方法的調用版本在運行期間是不可變的,即“編譯時可知,運行不可以變”,這類目標的方法的調用稱之為解析。

  Java 語言中符合“編譯器可知,運行期不可變”這個要求的方法,主要包括靜態方法和私有方法兩大類。


  2.解析調用一定是個靜態的過程,在編譯期就完全確定,在類加載的解析階段就將涉及的符號引用全部轉變為可以確定的直接引用,不會延遲到運行期再去完成。而分派(Dispatch)調用則可能是靜態的也可能是動態的。于是分派方式就有靜態分派和動態分派。


  下面我來解釋下靜態分派和動態分派。


  靜態分派


  看下面這段程序


  1//定義幾個類 2 3public abstract class Animal { 4 } 5class Dog extends Animal{ 6 } 7class Lion extends Animal{ 8 } 910class Test4{ 11 public void run(Animal animal){12 System.out.println("動物跑啊跑");13 }14 public void run(Dog dog){15 System.out.println("小狗跑啊跑");16 }17 public void run(Lion lion){18 System.out.println("獅子跑啊跑");19 } 20 //測試21 public static void main(String[] args){22 Animal dog = new Dog();23 Animal lion = new Lion();;24 Test4 test4 = ew Test4();25 test4.run(dog);26 test4.run(lion);27 }28}


  運行結果是


  動物跑啊跑


  動物跑啊跑


  相信大家學過重載的都能猜到是這個結果。但是,為什么會選擇這個方法進行重載呢?虛擬機是如何選擇的呢?


  在此之前我們先來了解兩個概念。


  先來看一行代碼:


  Animal dog = new Dog();


  對于這一行代碼,我們把Animal稱之為變量dog的靜態類型,而后面的Dog稱為變量dog的實際類型。


  現在我們再來看看虛擬機是根據什么來重載選擇哪個方法的。


  對于靜態類型相同,但實際類型不同的變量,虛擬機在重載的時候是根據參數的靜態類型而不是實際類型作為判斷選擇的。并且靜態類型在編譯器就是已知的了,這也代表在編譯階段,就已經決定好了選擇哪一個重載方法。


  由于dog和lion的靜態類型都是Animal,所以選擇了run(Animal animal)這個方法。


  靜態分派的典型應用就是方法的重載的,現在應該知道什么是靜態分派了吧?


  動態分派


  和靜態分派類似,所謂動態分派就是就是根據方法的實際類型來選擇調用哪個方法,而實際類型是需要到達運行期才能知道。像重寫就是動態分派的典型應用了。


  如何定義個類加載器?你使過哪些或者你在什么場景下需要個定義的類加載器嗎?


  可以把自己自定義的類加載器繼承 ClassLoader,然后重寫 findClass() 方法,把自己的類加載邏輯寫到 findClass() 方法中去。


  使用類加載器的場景:


  加載特定路徑的 class 文件


  熱部署加載 class 文件


  從網絡中加載一個加密的 class 文件


2020年Java基礎面試題及答案匯總


 以上就是動力節點java培訓機構的小編針對“2020年Java基礎面試題及答案匯總”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 深夜日韩| 嫩模被xxxx视频在线观看 | 精品久久久久久中文字幕无碍 | 九九精品视频一区二区三区 | 91成人爽a毛片一区二区 | xxxxxx国产精品视频 | 亚洲视屏一区 | 天天躁狠狠躁 | 天天舔天天射天天干 | 9久热这里只有精品视频在线观看 | 国产欧美日韩精品高清二区综合区 | 亚洲欧美精品网站在线观看 | 国产成人高清亚洲一区久久 | 最新中文字幕日本 | se94se亚洲欧美在线 | 亚洲一区二区三区免费视频 | 久久的爱久久久久的快乐 | 精品视频一区二区三区在线播放 | 亚洲国产欧美在线不卡中文 | 国产精品柳州莫菁身材四 | 国产精品成人观看视频国产 | 青青久久久 | 亚洲欧美色综合精品 | 国产成人a视频在线观看 | 久久首页| 亚洲欧美精品日韩欧美 | 豆奶视频污 | 免费观看欧美成人禁片 | 在线500福利视频国产 | 国产一区视频在线 | 曰鲁夜鲁鲁狠狠综合 | 91一区二区三区四区五区 | 免费观看四虎精品国产永久 | 亚洲日日| 精品的一区二区三区 | 天天干夜夜操 | 国产成人精品在线观看 | 日本一级黄色毛片 | 91精品国产91久久久久青草 | 欧洲精品视频在线观看 | 五月激情丁香婷婷综合第九 |