最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談java中類名.class, class.forName(), getClass()的區(qū)別

 更新時(shí)間:2017年05月18日 07:37:02   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇淺談java中類名.class, class.forName(), getClass()的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

Class對(duì)象的生成方式如下:

1、類名.class   

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

2、Class.forName("類名字符串")  (注:類名字符串是包名+類名) 

說(shuō)明:裝入類,并做類的靜態(tài)初始化,返回Class的對(duì)象

3、實(shí)例對(duì)象.getClass() 

說(shuō)明:對(duì)類進(jìn)行靜態(tài)初始化、非靜態(tài)初始化;返回引用o運(yùn)行時(shí)真正所指的對(duì)象(因?yàn)?子對(duì)象的引用可能會(huì)賦給父對(duì)象的引用變量中)所屬的類的Class的對(duì)象

通過(guò)下面的程序,來(lái)觀察一下Class對(duì)象的生成的原理。

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

try {
//測(cè)試.class

Class testTypeClass=TestClassType.class;

System.out.println("testTypeClass---"+testTypeClass);


//測(cè)試Class.forName()

Class testTypeForName=Class.forName("TestClassType");    

System.out.println("testTypeForName---"+testTypeForName);


//測(cè)試Object.getClass()

TestClassType testTypeGetClass= new TestClassType();

System.out.println("testTypeGetClass---"+testTypeGetClass.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é)果如下:

testTypeClass---class TestClassType

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

testTypeForName---class TestClassType

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

----構(gòu)造函數(shù)---

testTypeGetClass---class TestClassType

根據(jù)結(jié)果可以發(fā)現(xiàn),三種生成的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)我們編寫一個(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, class.forName(), getClass()的區(qū)別就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Security 強(qiáng)制退出指定用戶的方法

    Spring Security 強(qiáng)制退出指定用戶的方法

    本篇文章主要介紹了Spring Security 強(qiáng)制退出指定用戶的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Java Jackson之ObjectMapper常用用法總結(jié)

    Java Jackson之ObjectMapper常用用法總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java Jackson之ObjectMapper常用用法的相關(guān)資料,ObjectMapper是一個(gè)Java庫(kù),用于將JSON字符串轉(zhuǎn)換為Java對(duì)象或?qū)ava對(duì)象轉(zhuǎn)換為JSON字符串,需要的朋友可以參考下
    2024-01-01
  • SpringBoot獲取http數(shù)據(jù)、打印HTTP參數(shù)的4種方式

    SpringBoot獲取http數(shù)據(jù)、打印HTTP參數(shù)的4種方式

    Java的話本地打斷點(diǎn)可以調(diào)試獲取rest入?yún)?但是在生產(chǎn)環(huán)境可能我們獲取入?yún)ⅲ℉ttp?header/parameter)可能就沒(méi)有那么的輕松了,所以本文給大家介紹了SpringBoot獲取http數(shù)據(jù)、打印HTTP參數(shù)的4種方式,需要的朋友可以參考下
    2024-03-03
  • Spring?Boot簡(jiǎn)單實(shí)現(xiàn)文件上傳功能

    Spring?Boot簡(jiǎn)單實(shí)現(xiàn)文件上傳功能

    這篇文章主要介紹了Spring?Boot簡(jiǎn)單實(shí)現(xiàn)文件上傳功能,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • struts2自定義攔截器的示例代碼

    struts2自定義攔截器的示例代碼

    本篇文章主要介紹了struts2自定義攔截器的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • minio的下載和springboot整合minio使用方法

    minio的下載和springboot整合minio使用方法

    本文介紹了如何通過(guò)Docker拉取MinIO鏡像,并創(chuàng)建MinIO容器的過(guò)程,首先,需要在本地創(chuàng)建/data和/conf兩個(gè)目錄用于掛載MinIO的數(shù)據(jù)和配置文件,接下來(lái),通過(guò)docker?run命令啟動(dòng)容器,設(shè)置MinIO的訪問(wèn)端口、用戶名、密碼等信息,感興趣的朋友一起看看吧
    2024-09-09
  • 利用Java理解sql的語(yǔ)法(實(shí)例講解)

    利用Java理解sql的語(yǔ)法(實(shí)例講解)

    下面小編就為大家分享一篇利用Java理解sql的語(yǔ)法(實(shí)例講解),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • idea使用easyCode生成代碼(根據(jù)mybatis-plus模板創(chuàng)建自己的模板)

    idea使用easyCode生成代碼(根據(jù)mybatis-plus模板創(chuàng)建自己的模板)

    本文主要介紹了idea使用easyCode生成代碼,easyCode代碼生成器可以減少低價(jià)值搬磚,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • 詳解springboot整合ehcache實(shí)現(xiàn)緩存機(jī)制

    詳解springboot整合ehcache實(shí)現(xiàn)緩存機(jī)制

    這篇文章主要介紹了詳解springboot整合ehcache實(shí)現(xiàn)緩存機(jī)制,ehcache提供了多種緩存策略,主要分為內(nèi)存和磁盤兩級(jí),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 普通類注入不進(jìn)spring bean的解決方法

    普通類注入不進(jìn)spring bean的解決方法

    這篇文章主要介紹了普通類注入不進(jìn)spring bean的解決方法,幫助大家更好的理解和使用spring bean,感興趣的朋友可以了解下
    2021-01-01

最新評(píng)論

湘乡市| 巴彦县| 屏山县| 独山县| 南阳市| 锡林浩特市| 潮安县| 嘉祥县| 崇信县| 山东省| 昭通市| 乌拉特中旗| 会同县| 盐津县| 岗巴县| 舟曲县| 西贡区| 苗栗县| 广灵县| 响水县| 阳曲县| 东乌珠穆沁旗| 中山市| 麟游县| 奉贤区| 安徽省| 明水县| 长泰县| 石景山区| 长汀县| 呼和浩特市| 泰和县| 沧源| 文昌市| 宣城市| 大连市| 龙胜| 冷水江市| 枞阳县| 噶尔县| 新巴尔虎左旗|