国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

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

發(fā)布時(shí)間:2021-07-05 18:40 來(lái)源:腳本之家 閱讀:0 作者:code_greenhand 欄目: 開(kāi)發(fā)技術(shù)

目錄

類(lèi)加載器

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

負責將.class文件(存儲的物理文件)加載到內存中

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

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

鏈接

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

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

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

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

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

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

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

System class loader:系統類(lèi)加載器,負責加載用戶(hù)類(lèi)路徑上所指定的類(lèi)庫

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

System的父加載器為Platform

Platform的父加載器為Bootstrap

代碼示例

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

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

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

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

    }
}

雙親委派模型

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

 

ClassLoader 中的兩個(gè)方法

方法介紹

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Demo {

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

        //利用加載器去加載一個(gè)指定的文件
        //參數:文件的路徑(放在src的根目錄下,默認去那里加載)
        //返回值:字節流。
        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)知識總結的文章就介紹到這了,更多相關(guān)java類(lèi)加載內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

亚洲中文字幕伊人久久无码| 久艹视频免费看| 国产午夜成人AV在线播放| 99久久精品视香蕉蕉| 中文亚洲成A人片在线观看| 午夜内射中出视频|