<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 1.對抽象、繼承、多態的理解 ## 2.泛型的作用及使用場景 ## 3.枚舉的特點及使用場景 ## 4.線程sleep和wait的區別 ## 5.JAVA反射機制 總結:在程序運行時通過類類型Class獲得目標類的信息,然后在類信息的基礎上使用相對應的類加載器加載到內存中,再然后對這個類中進行實例化,方法調用等的使用的整個過程。 > Java可以在運行時加載、探知、使用編譯期間完全未知的class。 Java可以在運行時獲得任意一個類的信息(包括它的基類、所實現的接口、方法等)、構建類的Class對象(不是該類的對象,是后面提高的類類型)、生成類實例、調用methods。 > RTTI(Run-Time Type Information,運行時類型信息), 即程序在運行時去獲得一個對象所對應的類的信息。 > 類類型java.lang.Class: Class是所有類和接口的抽象,比如類的名字、類實現的接口、方法、屬性等。可以通知某個對象的Class對象來獲取類的信息。 > Class loader 類加載的過程就是將.class加載到內存中。 反射過程中使用到了Classloader,并且不同的類需要相對應的Classloader來加載。 Classloader是負責加載類的對象,作用是根據Jvm請求提供的類信息,將請求的類加載到內存中或加載到Jvm中。 每一個類的Class對象都持有一個對應的Classloader的引用,可以通過Class對象的getClassLoader()方法得到。 #### Java的Classloader有四種,分別為: 1. bootstrap Classloader:引導類加載器; 是用C++編寫的,是JVM的內置類加載器,它的名字為null。它用來加載核心類庫,即在lib下的類庫。 2. extension Classloader:擴展類加載器; 加載lib/ext下的類庫。 3. Application Classloader:應用程序類加載器; 加載ClassPath里的類庫。 4. User Defined Classloader:自定義類加載器。 #### 層次關系: 每一個Class對象都會持有一個對應的ClassLoader的引用。每一個ClassLoader對象也會持有一個Parent ClassLoader的引用。(不是繼承,只是引用) Bootstrap ClassLoader <- Extrension ClassLoader <- Application Classloader <- .... #### 雙親加載機制: 即當一個ClassLoader接到請求時,它不是直接加載對應的類,而是詢問它引用的ClassLoader是否能夠加載,而這個父ClassLoader則會詢問自己引用的ClassLoader是否加載了該類。只有當所有的ClassLoader都沒有加載該類時,最初的ClassLoader才自己去加載申請的類。 雙親加載機制可以一定程序上保證安全性,因為只要頂層ClassLoader能加載的東西就一定不會讓下層的ClassLoader有機會加載。也就保證了有些自定義的帶有破壞性的類不會被加載到JVM核心中。 #### Class類類型 Class類是所有類(注意是對象)的共有信息的抽象,比如該類實現的接口、對應的加載器、類名等等。 一句話,每一個類都有一個Class對象,這個對象在類加載后由JVM自動構造,也是由JVM管理的,Class類沒有公共的構造方法。 怎么得到Class對象: 1)利用Object.getClass()方法獲取該對象的Class實例; 2)利用Class.forName()靜態方法,用類的名字獲取一個Class實例; 3)運行類的.class的方式來獲取Class實例,對于基本數據類型的封裝類,還可以采用.TYPE來獲取相對應的基本數據類型的Class實例。 注意:虛擬機只會產生一份字節碼,用這份字節碼可以產生多個實例對象。也就是說Class對象只會有一個。 也就是說,在運行期間,如果我們要產生某個類的對象或者需要得到某個類的Class對象,JVM會檢查該類型的Class對象是否已被加載。如果沒有被加載,JVM會根據類的名稱找到.class文件并加載它。一旦某個類型的Class對象已被加載到內存,就可以用它來產生該類型的所有對象。 ## 6.weak/soft/strong引用的區別 ## 7.Object的hashCode()與equals()的區別和作用 ## 8.內部類,匿名類
                  <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>

                              哎呀哎呀视频在线观看