十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章主要講解了“Java中Class對(duì)象生成原理”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Java中Class對(duì)象生成原理”吧!
創(chuàng)新互聯(lián)建站長(zhǎng)期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為衡南企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站制作,衡南網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
Class對(duì)象的生成方式如下:
1.Class.forName("類名字符串")
2.類名.class
3.實(shí)例對(duì)象.getClass()
通過(guò)一段小程序,來(lái)觀察一下Class對(duì)象的生成的原理。
/** * 2012-2-6 * Administrator */ /** * @author: 梁煥月 * 文件名:TestClass.java * 時(shí)間:2012-2-6上午10:01:52 */ public class TestClass { public static void main(String[] args) { try { //測(cè)試Class.forName() Class testTypeForName=Class.forName("TestClassType"); System.out.println("testForName---"+testTypeForName); //測(cè)試類名.class Class testTypeClass=TestClassType.class; System.out.println("testTypeClass---"+testTypeClass); //測(cè)試Object.getClass() TestClassType testGetClass= new TestClassType(); System.out.println("testGetClass---"+testGetClass.getClass()); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class TestClassType{ //構(gòu)造函數(shù) public TestClassType(){ System.out.println("----構(gòu)造函數(shù)---"); } //靜態(tài)的參數(shù)初始化 static{ System.out.println("---靜態(tài)的參數(shù)初始化---"); } //非靜態(tài)的參數(shù)初始化 { System.out.println("----非靜態(tài)的參數(shù)初始化---"); } }
測(cè)試的結(jié)果如下:
---靜態(tài)的參數(shù)初始化---
testForName---class TestClassType
testTypeClass---class TestClassType
----非靜態(tài)的參數(shù)初始化---
----構(gòu)造函數(shù)---
testGetClass---class TestClassType
根據(jù)結(jié)果可以發(fā)現(xiàn),三種生成的Class對(duì)象一樣的。并且三種生成Class對(duì)象只打印一次“靜態(tài)的參數(shù)初始化”。
我們知道,靜態(tài)的方法屬性初始化,是在加載類的時(shí)候初始化。而非靜態(tài)方法屬性初始化,是new類實(shí)例對(duì)象的時(shí)候加載。
因此,這段程序說(shuō)明,三種方式生成Class對(duì)象,其實(shí)只有一個(gè)Class對(duì)象。在生成Class對(duì)象的時(shí)候,首先判斷內(nèi)存中是否已經(jīng)加載。
所以,生成Class對(duì)象的過(guò)程其實(shí)是如此的:
當(dāng)我們編寫(xiě)一個(gè)新的java類時(shí),JVM就會(huì)幫我們編譯成class對(duì)象,存放在同名的.class文件中。在運(yùn)行時(shí),當(dāng)需要生成這個(gè)類的對(duì)象,JVM就會(huì)檢查此類是否已經(jīng)裝載內(nèi)存中。若是沒(méi)有裝載,則把.class文件裝入到內(nèi)存中。若是裝載,則根據(jù)class文件生成實(shí)例對(duì)象。
感謝各位的閱讀,以上就是“Java中Class對(duì)象生成原理”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Java中Class對(duì)象生成原理這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!