溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java類加載器包括幾種以及它們之間的關(guān)系是怎樣的

發(fā)布時(shí)間:2021-09-14 14:23:01 來源:億速云 閱讀:159 作者:chen 欄目:編程語言

這篇文章主要講解了“ Java類加載器包括幾種以及它們之間的關(guān)系是怎樣的”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“ Java類加載器包括幾種以及它們之間的關(guān)系是怎樣的”吧!

1. 為什么說Java是一門平臺(tái)無關(guān)語言?

平臺(tái)無關(guān)實(shí)際的含義是“一次編寫到處運(yùn)行”。Java 能夠做到是因?yàn)樗淖止?jié)碼(byte code)可以運(yùn)行在任何操作系統(tǒng)上,與底層系統(tǒng)無關(guān)。

2. 為什么 Java 不是100%面向?qū)ο螅?/p>

Java 不是100%面向?qū)ο?,因?yàn)樗?個(gè)原始數(shù)據(jù)類型,例如 boolean、byte、char、int、float、double、long、short。它們不是對(duì)象。

3. 什么是 singleton class,如何創(chuàng)建一個(gè) singleton class?

Singleton class 在任何時(shí)間同一個(gè) JVM 中只有一個(gè)實(shí)例??梢园褬?gòu)造函數(shù)加 private 修飾符創(chuàng)建 singleton。

4. 什么是多態(tài)?

多態(tài)簡(jiǎn)單地說“一個(gè)接口,多種實(shí)現(xiàn)”。多態(tài)的出現(xiàn)使得在不同的場(chǎng)合同一個(gè)接口能夠提供不同功能,具體地說可以讓變量、函數(shù)或者對(duì)象能夠提供多種功能。下面是多態(tài)的兩種類型:

  1. 編譯時(shí)多態(tài)

  2. 運(yùn)行時(shí)多態(tài)

編譯時(shí)多態(tài)主要是對(duì)方法進(jìn)行重載(overload),而運(yùn)行時(shí)多態(tài)主要通過使用繼承或者實(shí)現(xiàn)接口。

什么是運(yùn)行時(shí)多態(tài),也稱動(dòng)態(tài)方法分配?

在 Java 中,運(yùn)行時(shí)多態(tài)或動(dòng)態(tài)方法分配是一種在運(yùn)行過程中的方法重載。在這個(gè)過程中,通過調(diào)用父類的變量引用被重載的方法。下面是一個(gè)例子:

Java類加載器包括幾種以及它們之間的關(guān)系是怎樣的

5. Java類加載器包括幾種?它們之間的關(guān)系是怎么樣的?

Java 類加載器有:

  • 引導(dǎo)類加載器(bootstrap class loader):只加載 JVM 自身需要的類,包名為 java、javax、sun 等開頭。

  • 擴(kuò)展類加載器(extensions class loader):加載 JAVA_HOME/lib/ext 目錄下或者由系統(tǒng)變量 -Djava.ext.dir 指定位路徑中的類庫(kù)。

  • 應(yīng)用程序類加載器(application class loader):加載系統(tǒng)類路徑 java -classpath 或 -Djava.class.path 下的類庫(kù)。

  • 自定義類加載器(java.lang.classloder):繼承 java.lang.ClassLoader 的自定義類加載器。

注意:-Djava.ext.dirs 會(huì)覆蓋 Java 本身的 ext 設(shè)置,造成 JDK 內(nèi)建功能無法使用??梢韵裣旅孢@樣指定參數(shù):

Java類加載器包括幾種以及它們之間的關(guān)系是怎樣的

它們的關(guān)系如下:

  • 啟動(dòng)類加載器,C++實(shí)現(xiàn),沒有父類。

  • 擴(kuò)展類加載器(ExtClassLoader),Java 實(shí)現(xiàn),父類加載器為 null。

  • 應(yīng)用程序類加載器(AppClassLoader),Java 實(shí)現(xiàn),父類加載器為 ExtClassLoader 。

  • 自定義類加載器,父類加載器為AppClassLoader。

  • Java學(xué)習(xí)交流圈:834962734 ,進(jìn)群可免費(fèi)獲取一份Java架構(gòu)進(jìn)階技術(shù)精品視頻。(高并發(fā)+Spring源碼+JVM原理解析+分布式架構(gòu)+微服務(wù)架構(gòu)+多線程并發(fā)原理+BATJ面試寶典)

6. 什么是JDBC驅(qū)動(dòng)?

JDBC Driver 是一種實(shí)現(xiàn) Java 應(yīng)用與數(shù)據(jù)庫(kù)交互的軟件。JDBC 驅(qū)動(dòng)有下面4種:

  1. JDBC-ODBC bridge 驅(qū)動(dòng)

  2. Native-API 驅(qū)動(dòng)(部分是 Java 驅(qū)動(dòng))

  3. 網(wǎng)絡(luò)協(xié)議驅(qū)動(dòng)(全部是 Java 驅(qū)動(dòng))

  4. Thin driver(全部是 Java 驅(qū)動(dòng))

7. 使用 Java 連接數(shù)據(jù)庫(kù)有哪幾步?

  • 注冊(cè)驅(qū)動(dòng)類

  • 新建數(shù)據(jù)庫(kù)連接

  • 新建語句(statement)

  • 查詢

  • 關(guān)閉連接

8. 列舉Spring配置中常用的重要注解。

下面是一些重要的注解:

  • @Required

  • @Autowired

  • @Qualifier

  • @Resource

  • @PostConstruct

  • @PreDestroy

9. Spring中的Bean是什么?列舉Spring Bean的不同作用域。

Bean 是 Spring 應(yīng)用的骨架。它們由 Spring IoC 容器管理。換句話說,Bean 是一個(gè)由 Spring IoC 容器初始化、裝配和管理的對(duì)象。

下面是 Spring Bean 的5種作用域:

  • Singleton:每個(gè)容器只創(chuàng)建一個(gè)實(shí)例,也是 Spring Bean 的默認(rèn)配置。由于非線程安全,因此確保使用時(shí)不要在 Bean 中共享實(shí)例變量,一面出現(xiàn)數(shù)據(jù)不一致。

  • Prototype:每次請(qǐng)求時(shí)創(chuàng)建一個(gè)新實(shí)例。

  • Request:與 prototype 相同,區(qū)別在于只針對(duì) Web 應(yīng)用。每次 HTTP 請(qǐng)求時(shí)創(chuàng)建一個(gè)新實(shí)例。

  • Session:每次收到 HTTP 會(huì)話請(qǐng)求時(shí)由容器創(chuàng)建一個(gè)新實(shí)例。

  • 全局 Session:為每個(gè)門戶應(yīng)用(Portlet App)創(chuàng)建一個(gè)全局 Session Bean。

感謝各位的閱讀,以上就是“ Java類加載器包括幾種以及它們之間的關(guān)系是怎樣的”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì) Java類加載器包括幾種以及它們之間的關(guān)系是怎樣的這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI