詳情描述
Java這門語(yǔ)言想必大家都不陌生,沒學(xué)過(guò)也聽過(guò),沒聽過(guò)也用過(guò)。隨著接觸的增多,很多同學(xué)就起了學(xué)Java的的心思。但是Java這門語(yǔ)言吧,雖然發(fā)展多年,風(fēng)格穩(wěn)定,但想要學(xué)好,還真的有足夠優(yōu)質(zhì)的學(xué)習(xí)資料不可。這個(gè)時(shí)候,千鋒老師就要站出來(lái)給大家分享一波Java學(xué)習(xí)資料了。
千鋒手里有整套完備而全新的Java學(xué)習(xí)資料,這次我們主要講一講類加載機(jī)制。
類加載過(guò)程:加載、驗(yàn)證、準(zhǔn)備、解析、初始化
加載
在加載階段,虛擬機(jī)主要完成三件事:
1.通 過(guò)一個(gè)類的全限定名來(lái)獲取定義此類的二進(jìn)制字節(jié)流。
2.將這個(gè)字節(jié)流所代表的靜態(tài)存儲(chǔ)結(jié)構(gòu)轉(zhuǎn)化為方法區(qū)域的運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu)。
3.在Java堆中生成一個(gè)代表這個(gè)類的java.lang.Class對(duì)象,作為方法區(qū)域數(shù)據(jù)的訪問入口
驗(yàn)證
驗(yàn)證階段作用是保 證Class文件的字節(jié)流包含的信息符合JVM規(guī)范,不會(huì)給JVM造成危害。如果驗(yàn)證失敗,就會(huì)拋出一個(gè)java.lang.VerifyError異常或其子類異常。驗(yàn)證過(guò)程分為四個(gè)階段
1.文件格式驗(yàn)證:驗(yàn)證字節(jié)流文件是否符合Class文件格式的規(guī)范,并且能被當(dāng)前虛擬機(jī)正確的處理。
2.元數(shù)據(jù)驗(yàn)證:是對(duì)字節(jié)碼描述的信息進(jìn)行語(yǔ)義分析,以保 證其描述的信息符合Java語(yǔ)言的規(guī)范。
3.字節(jié)碼驗(yàn)證:主要是進(jìn)行數(shù)據(jù)流和控制流的分析,保 證被校驗(yàn)類的方法在運(yùn)行時(shí)不會(huì)危害虛擬機(jī)。
4.符號(hào)引用驗(yàn)證:符號(hào)引用驗(yàn)證發(fā)生在虛擬機(jī)將符號(hào)引用轉(zhuǎn)化為直接引用的時(shí)候,這個(gè)轉(zhuǎn)化動(dòng)作將在解析階段中發(fā)生。
準(zhǔn)備
準(zhǔn)備階段為變量分配內(nèi)存并設(shè)置類變量的初始化。在這個(gè)階段分配的僅為類的變量(static修飾的變量),而不包括類的實(shí)例變量。對(duì)已非final的變量,JVM會(huì)將其設(shè)置成“零值”,而不是其賦值語(yǔ)句的值:
pirvate static int size = 12;
那么在這個(gè)階段,size的值為0,而不是12。
final修飾的類變量將會(huì)賦值成真實(shí)的值。
更多Java學(xué)習(xí)資料,盡在:
千鋒java全套基礎(chǔ)視頻教程
千鋒javaEE教程精講:Html和CSS:
千鋒JAVA第二階段Web實(shí)戰(zhàn)講解教程
千鋒教育:
千鋒武漢校區(qū):
武漢校區(qū)地址:武漢市光谷大道61號(hào)智慧園21號(hào)樓2層
人 :高老師
面授課程:全棧WEB+培訓(xùn)、全鏈路設(shè)計(jì)培訓(xùn)、PHP全棧+服務(wù)器集群培訓(xùn)、JavaEE+分布式開發(fā)培訓(xùn)、大數(shù)據(jù)+人工智能培訓(xùn)、 Unity游戲開發(fā)培訓(xùn)、Python培訓(xùn)、云計(jì)算+Python運(yùn)維培訓(xùn)、全棧軟件測(cè)試培訓(xùn)、Android培訓(xùn)、iOS培訓(xùn)