java中Class對象詳解和類名.class, class.forName(), getClass()區(qū)別

Class對象的生成方式如下:

1.類名.class 說明: JVM將使用類裝載器, 將類裝入內(nèi)存(前提是:類還沒有裝入內(nèi)存),不做類的初始化工作.返回Class的對象

2.Class.forName("類名字符串") (注:類名字符串是包名+類名) 說明:裝入類,并做類的靜態(tài)初始化卡啰,返回Class的對象

3.實(shí)例對象.getClass() 說明:對類進(jìn)行靜態(tài)初始化览芳、非靜態(tài)初始化钞楼;返回引用運(yùn)行時(shí)真正所指的對象(因?yàn)?子對象的引用可能會賦給父對象的引用變量中)所屬的類的Class的對象

通過下面的程序,來觀察一下Class對象的生成的原理懦窘。

 package ClassTest;  

 public 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ù)初始化---");  
  }  

  }  

 package ClassTest;  

 public class TestClass {  
 public static void main(String[] args) {  

 try {  
 // 測試.class  
 @SuppressWarnings("rawtypes")  
 Class testTypeClass = TestClassType.class;  
  System.out.println("testTypeClass---" + testTypeClass);  

  // 測試Class.forName()  
  @SuppressWarnings("rawtypes")  
  Class testTypeForName = Class.forName("ClassTest.TestClassType");  
  System.out.println("testTypeForName---" + testTypeForName);  

  // 測試Object.getClass()  
  TestClassType testTypeGetClass = new TestClassType();  
  System.out.println("testTypeGetClass---"  
  + testTypeGetClass.getClass());  

  } catch (ClassNotFoundException e) {  
  // TODO Auto-generated catch block  
  e.printStackTrace();  
  }  
  }  

  }

運(yùn)行結(jié)果如下

  testTypeClass---class ClassTest.TestClassType  
  ---靜態(tài)的參數(shù)初始化---  
  testTypeForName---class ClassTest.TestClassType  
  ----非靜態(tài)的參數(shù)初始化---  
  ----構(gòu)造函數(shù)---  
  testTypeGetClass---class ClassTest.TestClassType  

根據(jù)結(jié)果可以發(fā)現(xiàn),三種生成的Class對象一樣的稚配。并且程序只打印一次“靜態(tài)的參數(shù)初始化”畅涂。

我們知道,靜態(tài)的方法屬性初始化道川,是在加載類的時(shí)候初始化午衰。而非靜態(tài)方法屬性初始化,是new類實(shí)例對象的時(shí)候加載愤惰。

因此苇经,這段程序說明,三種方式生成Class對象宦言,其實(shí)只有一個Class對象扇单。在生成Class對象的時(shí)候,首先判斷內(nèi)存中是否已經(jīng)加載奠旺。

所以蜘澜,生成Class對象的過程其實(shí)是如此的:

當(dāng)我們編寫一個新的java類時(shí),JVM就會幫我們編譯成class對象,存放在同名的.class文件中施流。在運(yùn)行時(shí),當(dāng)需要生成這個類的對象鄙信,JVM就會檢查此類是否已經(jīng)裝載內(nèi)存中瞪醋。若是沒有裝載,則把.class文件裝入到內(nèi)存中装诡。若是裝載银受,則根據(jù)class文件生成實(shí)例對象。

轉(zhuǎn)自: http://blog.csdn.net/zhangxichao100/article/details/51104971

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸦采,一起剝皮案震驚了整個濱河市宾巍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渔伯,老刑警劉巖顶霞,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锣吼,居然都是意外死亡选浑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門玄叠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來古徒,“玉大人,你說我怎么就攤上這事诸典∶韬” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵狐粱,是天一觀的道長舀寓。 經(jīng)常有香客問我,道長肌蜻,這世上最難降的妖魔是什么互墓? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮蒋搜,結(jié)果婚禮上篡撵,老公的妹妹穿的比我還像新娘。我一直安慰自己豆挽,他們只是感情好育谬,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著帮哈,像睡著了一般膛檀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天咖刃,我揣著相機(jī)與錄音泳炉,去河邊找鬼。 笑死嚎杨,一個胖子當(dāng)著我的面吹牛花鹅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播枫浙,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼刨肃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了自脯?” 一聲冷哼從身側(cè)響起之景,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤斤富,失蹤者是張志新(化名)和其女友劉穎膏潮,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體满力,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡焕参,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了油额。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叠纷。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖潦嘶,靈堂內(nèi)的尸體忽然破棺而出涩嚣,到底是詐尸還是另有隱情,我是刑警寧澤掂僵,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布航厚,位于F島的核電站,受9級特大地震影響锰蓬,放射性物質(zhì)發(fā)生泄漏幔睬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一芹扭、第九天 我趴在偏房一處隱蔽的房頂上張望麻顶。 院中可真熱鬧,春花似錦舱卡、人聲如沸辅肾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矫钓。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間份汗,已是汗流浹背盈电。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杯活,地道東北人匆帚。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像旁钧,于是被迫代替她去往敵國和親吸重。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351