欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java類(lèi)加載相關(guān)知識(shí)總結(jié)

 更新時(shí)間:2021年05月23日 11:50:44   作者:code_greenhand  
今天帶大家復(fù)習(xí)Java基礎(chǔ)知識(shí),文章對(duì)Java類(lèi)加載做了詳細(xì)介紹,對(duì)正在學(xué)習(xí)java的小伙伴很有幫助,需要的朋友可以參考下

類(lèi)加載器

  • 類(lèi)加載器作用

負(fù)責(zé)將.class文件(存儲(chǔ)的物理文件)加載到內(nèi)存中

  • 類(lèi)加載器過(guò)程

加載:通過(guò)全類(lèi)名獲取這個(gè)類(lèi)準(zhǔn)備用流傳輸,加載進(jìn)內(nèi)存,加載完畢創(chuàng)建一個(gè)Class對(duì)象

鏈接

驗(yàn)證:確保Class文件字節(jié)流中包含的信息符合當(dāng)前虛擬機(jī)的要求,并且不會(huì)危害虛擬機(jī)自身安全

(文件中的信息是否符合虛擬機(jī)規(guī)范有沒(méi)有安全隱患)準(zhǔn)備:負(fù)責(zé)為類(lèi)的類(lèi)變量(被static修飾的變量)分配內(nèi)存,并設(shè)置默認(rèn)初始化值

(初始化靜態(tài)變量)解析:將類(lèi)的二進(jìn)制數(shù)據(jù)流中的符號(hào)引用替換為直接引用
(本類(lèi)中如果用到了其他類(lèi),此時(shí)就需要找到對(duì)應(yīng)的類(lèi))

初始化:根據(jù)程序員通過(guò)程序制定的主觀計(jì)劃去初始化類(lèi)變量和其他資源(也就是自己寫(xiě)的構(gòu)造函數(shù)初始化)
(靜態(tài)變量賦值以及初始化其他資源)

  • 類(lèi)加載分類(lèi)

Bootstrap class loader:虛擬機(jī)的內(nèi)置類(lèi)加載器,通常表示為null ,并且沒(méi)有父null

Platform class loader:平臺(tái)類(lèi)加載器,負(fù)責(zé)加載JDK中一些特殊的模塊

System class loader:系統(tǒng)類(lèi)加載器,負(fù)責(zé)加載用戶類(lèi)路徑上所指定的類(lèi)庫(kù)

類(lèi)加載器繼承關(guān)系

System的父加載器為Platform

Platform的父加載器為Bootstrap

代碼示例

public class ClassLoaderDemo1 {
    public static void main(String[] args) {
        //獲取系統(tǒng)類(lèi)加載器
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();

        //獲取系統(tǒng)類(lèi)加載器的父加載器 --- 平臺(tái)類(lèi)加載器
        ClassLoader classLoader1 = systemClassLoader.getParent();

        //獲取平臺(tái)類(lèi)加載器的父加載器 --- 啟動(dòng)類(lèi)加載器
        ClassLoader classLoader2 = classLoader1.getParent();

        System.out.println("系統(tǒng)類(lèi)加載器" + systemClassLoader);
        System.out.println("平臺(tái)類(lèi)加載器" + classLoader1);
        System.out.println("啟動(dòng)類(lèi)加載器" + classLoader2);

    }
}

雙親委派模型

 如果一個(gè)類(lèi)加載器收到了類(lèi)加載請(qǐng)求,它并不會(huì)自己先去加載,而是把這個(gè)請(qǐng)求委托給父類(lèi)的加載器去執(zhí)行,如果父類(lèi)加載器還存在其父類(lèi)加載器,則進(jìn)一步向上委托,依次遞歸,請(qǐng)求最終將到達(dá)頂層的啟動(dòng)類(lèi)加載器,如果父類(lèi)加載器可以完成類(lèi)加載任務(wù),就成功返回,倘若父類(lèi)加載器無(wú)法完成此加載任務(wù),子加載器才會(huì)嘗試自己去加載,這就是雙親委派模式(一句話意思就是加載類(lèi)先讓父類(lèi)的加載器去加載,如果父類(lèi)加載不了就會(huì)重新向下讓子類(lèi)加載器依次去加載知道找到加載的類(lèi)加載器)

在這里插入圖片描述 

ClassLoader 中的兩個(gè)方法

方法介紹

方法名 說(shuō)明
public static ClassLoader getSystemClassLoader() 獲取系統(tǒng)類(lèi)加載器
public InputStream getResourceAsStream(String name) 加載某一個(gè)資源文件
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Demo {

    public static void main(String[] args) throws IOException {
        //獲取系統(tǒng)類(lèi)加載器
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();

        //利用加載器去加載一個(gè)指定的文件
        //參數(shù):文件的路徑(放在src的根目錄下,默認(rèn)去那里加載)
        //返回值:字節(jié)流。
        InputStream is = systemClassLoader.getResourceAsStream("prop.properties");

        Properties prop = new Properties();
        prop.load(is);
        System.out.println(prop.getProperty("name"));
        
        is.close();
    }

}

到此這篇關(guān)于java類(lèi)加載相關(guān)知識(shí)總結(jié)的文章就介紹到這了,更多相關(guān)java類(lèi)加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java趣味練習(xí)題之輸出兩個(gè)日期之間的相隔天數(shù)

    Java趣味練習(xí)題之輸出兩個(gè)日期之間的相隔天數(shù)

    本篇文章介紹了我看到的一個(gè)趣味小題目,怎么求得兩個(gè)日期之間相隔的天數(shù),以及解決該題目的過(guò)程及思路,通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Springboot+MyBatist實(shí)現(xiàn)前后臺(tái)交互登陸功能方式

    Springboot+MyBatist實(shí)現(xiàn)前后臺(tái)交互登陸功能方式

    這篇文章主要介紹了Springboot+MyBatist實(shí)現(xiàn)前后臺(tái)交互登陸功能方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Kotlin與Java的主客觀對(duì)比分析

    Kotlin與Java的主客觀對(duì)比分析

    這篇文章主要介紹了Kotlin與Java的主客觀對(duì)比分析,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 詳解Mybatis中的PooledDataSource

    詳解Mybatis中的PooledDataSource

    這篇文章主要介紹了詳解Mybatis中的PooledDataSource,PooledDataSource使用了數(shù)據(jù)庫(kù)連接池可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接池的重復(fù)利用,還能控制連接數(shù)據(jù)庫(kù)的連接上限
    2022-06-06
  • 解決Eclipse/STS中出現(xiàn)Resource is out of sync with the file system的異常問(wèn)題

    解決Eclipse/STS中出現(xiàn)Resource is out of sync with the file system

    今天小編就為大家分享一篇關(guān)于解決Eclipse/STS中出現(xiàn)Resource is out of sync with the file system的異常問(wèn)題,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • 詳解使用Spring?Data?repository進(jìn)行數(shù)據(jù)層的訪問(wèn)問(wèn)題

    詳解使用Spring?Data?repository進(jìn)行數(shù)據(jù)層的訪問(wèn)問(wèn)題

    這篇文章主要介紹了使用Spring?Data?repository進(jìn)行數(shù)據(jù)層的訪問(wèn),抽象出Spring Data repository是因?yàn)樵陂_(kāi)發(fā)過(guò)程中,常常會(huì)為了實(shí)現(xiàn)不同持久化存儲(chǔ)的數(shù)據(jù)訪問(wèn)層而寫(xiě)大量的大同小異的代碼,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-06-06
  • 詳解使用Spring3 實(shí)現(xiàn)用戶登錄以及權(quán)限認(rèn)證

    詳解使用Spring3 實(shí)現(xiàn)用戶登錄以及權(quán)限認(rèn)證

    這篇文章主要介紹了詳解使用Spring3 實(shí)現(xiàn)用戶登錄以及權(quán)限認(rèn)證,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。
    2017-03-03
  • Spring和SpringBoot有哪些區(qū)別

    Spring和SpringBoot有哪些區(qū)別

    相信對(duì)于用了 SpringBoot很久的同學(xué)來(lái)說(shuō),還不是很理解 SpringBoot到底和 Spring有什么區(qū)別,看完文章中的比較,或許你有了不同的答案和看法。
    2020-10-10
  • Java重點(diǎn)之基于比較的七大排序

    Java重點(diǎn)之基于比較的七大排序

    最近幾天在研究排序算法,看了很多博客,發(fā)現(xiàn)網(wǎng)上有的文章中對(duì)排序算法解釋的并不是很透徹,而且有很多代碼都是錯(cuò)誤的,所以我根據(jù)這幾天看的文章,整理了一個(gè)較為完整的排序算法總結(jié),本文中的所有算法均有JAVA實(shí)現(xiàn),經(jīng)本人調(diào)試無(wú)誤后才發(fā)出,如有錯(cuò)誤,請(qǐng)各位前輩指出
    2021-10-10
  • 利用ScriptEngineManager實(shí)現(xiàn)字符串公式靈活計(jì)算的方法

    利用ScriptEngineManager實(shí)現(xiàn)字符串公式靈活計(jì)算的方法

    今天小編就為大家分享一篇利用ScriptEngineManager實(shí)現(xiàn)字符串公式靈活計(jì)算的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07

最新評(píng)論