华南俳烁实业有限公司

java

當(dāng)前位置:中華考試網(wǎng) >> java >> java面試題 >> 文章內(nèi)容

2020年java常見面試題及答案:第六部分

來源:中華考試網(wǎng)  [2020年9月30日]  【

  類加載過程

 、偌虞d:將外部的.class文件調(diào)入內(nèi)存,在.class文件加載至方法區(qū)后,會(huì)在堆中創(chuàng)建一個(gè)java.lang.Class對(duì)象,對(duì)來封裝類的信息,類加載的最終產(chǎn)物就是位于堆中的Class對(duì)象(注意不是目標(biāo)類對(duì)象),該對(duì)象封裝了類在方法區(qū)中的數(shù)據(jù)結(jié)構(gòu),并且向用戶提供了訪問方法區(qū)數(shù)據(jù)結(jié)構(gòu)的接口,即Java反射的接口。

 、趯ava類的二進(jìn)制代碼合并到JVM的運(yùn)行狀態(tài)之中的過程

  驗(yàn)證:確保加載的類信息符合JVM規(guī)范,沒有安全方面的問題

  準(zhǔn)備:正式為類變量(static變量)分配內(nèi)存并設(shè)置類變量初始值的階段,這些內(nèi)存都將在方法區(qū)中進(jìn)行分配

  解析:虛擬機(jī)常量池的符號(hào)引用替換為字節(jié)引用過程

  概念解釋:

  JVM中的直接引用和符號(hào)引用

  符號(hào)引用:

  官方:符號(hào)引用以一組符號(hào)來描述所引用的目標(biāo)。符號(hào)引用可以是任何形式的字面量,只要使用時(shí)能無歧義地定位到目標(biāo)即可,符號(hào)引用和虛擬機(jī)的布局無關(guān)。

  個(gè)人理解:在虛擬機(jī)編譯java類為class文件,在編譯時(shí)不知道引用類的地址,這個(gè)時(shí)候多以符號(hào)來代替。在JVM加載類的解析階段將這個(gè)符號(hào)轉(zhuǎn)化為實(shí)際的內(nèi)存地址。

  直接引用:

  官方:直接引用和虛擬機(jī)的布局是相關(guān)的,不同的虛擬機(jī)對(duì)于相同的符號(hào)引用所翻譯 出來的直接引用一般是不同的。如果有了直接引用,那么直接引用的目標(biāo)一定被加載 到了內(nèi)存中。

  個(gè)人理解:1. 直接指向目標(biāo)的指針(指向?qū)ο,類變量,類方法的指?

  2. 相對(duì)偏移量(指向?qū)嵗淖兞,方法的指?

  3. 一個(gè)間接定位到對(duì)象的句柄。

  PS:偏移量:存儲(chǔ)單元的實(shí)際地址與其所在段的段地址之間的距離稱為段內(nèi)偏移,也稱為“有效地址或偏移量”

 、鄢跏蓟

  這個(gè)階段主要是對(duì)類變量初始化,是執(zhí)行類構(gòu)造器的過程。

  換句話說,只對(duì)static修飾的變量或語句進(jìn)行初始化。

  如果初始化一個(gè)類的時(shí)候,其父類尚未初始化,則優(yōu)先初始化其父類。

  如果同時(shí)包含多個(gè)靜態(tài)變量和靜態(tài)代碼塊,則按照自上而下的順序依次執(zhí)行。

  填寫下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽!害怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可全國推薦就業(yè)!

預(yù)約申請(qǐng)免費(fèi)聽課

  • 地區(qū):
  • 姓名:
  • 手機(jī):
責(zé)編:yangliu1997
  • 會(huì)計(jì)考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學(xué)歷考試
蒲江县| 肃宁县| 文水县| 资溪县| 贞丰县| 乌什县| 镇康县| 绥德县| 新兴县| 治县。| 南昌市| 上虞市| 玉龙| 灵川县| 明溪县| 元江| 茶陵县| 报价| 盘锦市| 江孜县| 本溪市| 乌兰察布市| 新竹县| 泸溪县| 拜城县| 东光县| 沛县| 南昌市| 涡阳县| 威海市| 沂水县| 平顶山市| 璧山县| 菏泽市| 宣汉县| 罗源县| 彰化市| 蒙山县| 元朗区| 绥芬河市| 奉节县|