日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JVM如何判斷類相同

上篇博客中,提到Class生成對象的原理,根據(jù)上篇博客的小例子,得出的結(jié)果程序中的Class對象是一樣的,是只有一個Class對象。那JVM是如何判斷這三個Class對象其實(shí)是一個Class對象呢?

在壽光等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需定制,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,營銷型網(wǎng)站,外貿(mào)網(wǎng)站建設(shè),壽光網(wǎng)站建設(shè)費(fèi)用合理。

JVM根據(jù)兩個方面判斷:一是類的全稱;另一個是類加載器。

根據(jù)上篇博客中的結(jié)果得出:類的全稱是相同的。那類加載器是否相同呢?即使類的全稱相同,而使用的加載器不同,那Class對象也是不同的。那我們繼續(xù)上篇博客中的例子,看看所使用的加載器的結(jié)果如何呢?其中使用getClassLoad()方法。

 
 
 
  1. /**  
  2.  
  3.  * @author: 梁煥月   
  4.  
  5.  * 文件名:TestClass.java   
  6.  
  7.  * 時間:2012-2-6上午10:01:52    
  8.  
  9.  */ 
  10.  
  11. public class TestClass {  
  12.  
  13.    
  14.  
  15. public  static void main(String[] args)  
  16.  
  17. {  
  18.  
  19. try {  
  20.  
  21. //測試Class.forName()  
  22.  
  23. Class testTypeForName=Class.forName("TestClassType");          
  24.  
  25. System.out.println("testForName---"+testTypeForName);  
  26.  
  27. //測試類加載器  
  28.  
  29. System.out.println("forName形式的加載器--"+testTypeForName.getClassLoader());  
  30.  
  31. //測試類名.class  
  32.  
  33. Class testTypeClass=TestClassType.class;  
  34.  
  35. System.out.println("testTypeClass---"+testTypeClass);  
  36.  
  37. //測試類加載器  
  38.  
  39. System.out.println(".class形式的加載器---"+testTypeClass.getClassLoader());  
  40.  
  41. //測試Object.getClass()  
  42.  
  43. TestClassType testGetClass= new TestClassType();  
  44.  
  45. System.out.println("testGetClass---"+testGetClass.getClass());  
  46.  
  47. //測試類加載器  
  48.  
  49. System.out.println("getClass形式的加載器--"+testGetClass.getClass().getClassLoader());   
  50.  
  51. } catch (ClassNotFoundException e) {  
  52.  
  53. // TODO Auto-generated catch block  
  54.  
  55. e.printStackTrace();  
  56.  
  57. }  
  58.  
  59.    
  60.  
  61. }  
  62.  
  63. }  
  64.  
  65.  class TestClassType{  
  66.  
  67. //構(gòu)造函數(shù)  
  68.  
  69. public TestClassType(){  
  70.  
  71. System.out.println("----構(gòu)造函數(shù)---");  
  72.  
  73. }  
  74.  
  75. //靜態(tài)的參數(shù)初始化  
  76.  
  77. static{  
  78.  
  79. System.out.println("---靜態(tài)的參數(shù)初始化---");  
  80.  
  81. }  
  82.  
  83. //非靜態(tài)的參數(shù)初始化  
  84.  
  85. {  
  86.  
  87. System.out.println("----非靜態(tài)的參數(shù)初始化---");  
  88.  
  89. }          
  90.  

結(jié)果如下:

觀察結(jié)果發(fā)現(xiàn):三種形式的加載器是相同的。

因此可以說明上篇博客中例子中的三個方式生成的Class對象只有一個.同樣也證明了上篇博客中Class對象生成的原理。JVM首先判斷內(nèi)存中是否已經(jīng)加載該類。判斷的依據(jù)就是此篇博客的介紹。


本文名稱:JVM如何判斷類相同
轉(zhuǎn)載源于:http://m.5511xx.com/article/cdshcip.html