自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java中Class對象詳解

開發(fā) 后端
Java中把生成Class對象和實例對象弄混了,更何況生成Class對象和生成instance都有多種方式。所以只有弄清其中的原理,才可以深入理解。首先要生成Class對象,然后再生成Instance。那Class對象的生成方式有哪些呢,以及其中是如何秘密生成的呢?

Java中把生成Class對象和實例對象弄混了,更何況生成Class對象和生成instance都有多種方式。所以只有弄清其中的原理,才可以深入理解。首先要生成Class對象,然后再生成Instance。那Class對象的生成方式有哪些呢,以及其中是如何秘密生成的呢?

Class對象的生成方式如下:

1.Class.forName("類名字符串")

2.類名.class

3.實例對象.getClass()

通過一段小程序,來觀察一下Class對象的生成的原理。

  1. /**  
  2.  * 2012-2-6  
  3.  * Administrator  
  4.  */ 
  5. /**  
  6.  * @author: 梁煥月   
  7.  * 文件名:TestClass.java   
  8.  * 時間:2012-2-6上午10:01:52    
  9.  */ 
  10. public class TestClass {  
  11. public  static void main(String[] args)  
  12. {  
  13. try {  
  14. //測試Class.forName()  
  15. Class testTypeForName=Class.forName("TestClassType");          
  16. System.out.println("testForName---"+testTypeForName);  
  17. //測試類名.class  
  18. Class testTypeClass=TestClassType.class;  
  19. System.out.println("testTypeClass---"+testTypeClass);  
  20. //測試Object.getClass()  
  21. TestClassType testGetClass= new TestClassType();  
  22. System.out.println("testGetClass---"+testGetClass.getClass());  
  23. catch (ClassNotFoundException e) {  
  24. // TODO Auto-generated catch block  
  25. e.printStackTrace();  
  26. }  
  27. }  
  28. }  
  29.  class TestClassType{  
  30. //構造函數(shù)  
  31. public TestClassType(){  
  32. System.out.println("----構造函數(shù)---");  
  33. }  
  34. //靜態(tài)的參數(shù)初始化  
  35. static{  
  36. System.out.println("---靜態(tài)的參數(shù)初始化---");  
  37. }  
  38. //非靜態(tài)的參數(shù)初始化  
  39. {  
  40. System.out.println("----非靜態(tài)的參數(shù)初始化---");  
  41. }          

測試的結果如下:

---靜態(tài)的參數(shù)初始化---

testForName---class TestClassType

testTypeClass---class TestClassType

----非靜態(tài)的參數(shù)初始化---

----構造函數(shù)---

testGetClass---class TestClassType

 

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

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

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

所以,生成Class對象的過程其實是如此的:

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

原文鏈接:http://blog.csdn.net/llhhyy1989/article/details/7244123

【編輯推薦】

  1. Java反射機制剖析:簡單談談動態(tài)代理
  2. Java API設計清單
  3. Java遠程方法調(diào)用RMI
  4. Java編程:常見問題匯總
  5. Java迷題:等于,還是不等于?
責任編輯:林師授 來源: llhhyy1989的博客
相關推薦

2010-10-09 09:56:51

JavaScriptObject對象

2009-02-20 08:54:20

DownloaderSilverlight對象

2022-04-29 14:38:49

class文件結構分析

2016-01-08 10:38:44

Java對象深復制

2021-04-25 06:12:19

Java內(nèi)存布局JVM

2009-10-20 15:03:29

ExpandoObje

2009-08-27 16:22:58

interfaceabstract cl

2015-10-08 10:01:10

Objective-CLayout

2019-07-24 08:34:35

Java對象數(shù)據(jù)結構

2023-04-23 08:49:17

Java接口Future

2011-09-27 10:23:24

Java反射機制

2025-01-15 07:00:00

Java代碼Lambda

2021-04-13 09:20:21

JavaUnsafejava8

2011-04-18 09:46:37

Java

2010-06-29 14:33:36

UML面向對象建模

2012-03-13 16:39:52

Java

2011-08-22 16:19:58

jQuery

2010-09-28 10:40:32

HTML DOM

2020-09-26 07:19:46

Java

2016-09-18 16:58:09

JavaProperties
點贊
收藏

51CTO技術棧公眾號