<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ### 類加載的時機 * 隱式加載 new 創建類的實例, * 顯式加載:loaderClass,forName等 * 訪問類的靜態變量,或者為靜態變量賦值 * 調用類的靜態方法 * 初始化某個類的子類 * 使用反射方式創建某個類或者接口對象的Class對象 * 直接使用`java.exe`命令來運行某個主類 ### 類加載過程 加載->驗證->準備->解析->初始化 ![](https://img.kancloud.cn/ff/32/ff32d2c3025387bc61fc1c307266bff3_602x435.png) - **加載** 類加載過程的一個階段,ClassLoader通過一個類的完全限定名查找此類字節碼文件,并利用字節碼文件創建一個class對象。 - **驗證** 目的在于確保class文件的字節流中包含信息符合當前虛擬機要求,不會危害虛擬機自身的安全,主要包括四種驗證:文件格式的驗證,元數據的驗證,字節碼驗證,符號引用驗證。 - **準備** 為類變量(static修飾的字段變量)分配內存并且設置該類變量的初始值,(如static int i = 5 這里只是將 i 賦值為0,在初始化的階段再把 i 賦值為5),這里不包含final修飾的static ,因為final在編譯的時候就已經分配了。這里不會為實例變量分配初始化,類變量會分配在方法區中,實例變量會隨著對象分配到Java堆中。 - **解析** 這里主要的任務是把常量池中的符號引用替換成直接引用 - **初始化** 這里是類記載的最后階段,如果該類具有父類就進行對父類進行初始化,執行其靜態初始化器(靜態代碼塊)和靜態初始化成員變量。(前面已經對static 初始化了默認值,這里我們對它進行賦值,成員變量也將被初始化) * [ ] 雙親委派模式 如果一個類收到了類加載的請求,它并不會自己先去加載,而是把這個請求委托給父類加載器去執行,如果父類加載器還存在父類加載器,則進一步向上委托,依次遞歸,請求最后到達頂層的啟動類加載器,如果弗雷能夠完成類的加載任務,就會成功返回,倘若父類加載器無法完成任務,子類加載器才會嘗試自己去加載,這就是雙親委派模式。就是每個兒子都很懶,遇到類加載的活都給它爸爸干,直到爸爸說我也做不來的時候,兒子才會想辦法自己去加載。 ![](https://img.kancloud.cn/6e/b5/6eb5502df1b2a705cc2815293ccfcda8_1240x882.png) * [ ] 自定義類加載器 一般需要繼承java.lang.ClassLoader類并重寫其findclass方法。 ***** 引用自 https://www.cnblogs.com/czwbig/p/11127222.html https://blog.csdn.net/weixin_40236948/article/details/88072698
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看