java基礎總結一

ahesihua發表於2011-10-19

java  基礎總結一

一、java虛擬機器(JVM)

1、關於ClassLoader類

  java程式不是一個可執行檔案,它有許多獨立的類檔案組成,每一個類檔案對應一個java類。ClassLoader包括bootstrap classloader(啟動類載入器),它在JVM執行的時候載入java核心的API。這個API中就包括使用者定義的ClassLoader,使用者定義是指通過java程式實現的ClassLoader:一個是ExtClassLoader,一個是AppClassLoader。前一個的作用是用來載入lib/ext目錄下的類,後一個的作用是用來載入使用者機器上ClASSPATH設定目錄中的class。

2、ClassLoader類中的一些方法

(1)、public Class<?> loadClass(String name boolean resolve)throws ClassNotFoundException

       使用指定的二進位制名稱來載入類

(2)、

protected final Class<?> defineClass(String name,
                                     byte[] b,
                                     int off,
                                     int len)
                              throws ClassFormatError

將一個 byte 陣列轉換為 class類的例項。必須分析 Class,然後才能使用它。

(3)、protected final Class<?> findSystemClass(String name)
                                  throws ClassNotFoundException

該方法從本地檔案系統裝入檔案。

(4)、

protected final void resolveClass(Class<?> c)
連結指定的類。類載入器可以使用此方法(其名稱容易使人誤解)來連結類。如果已經連結類 c,則僅返回此方法。否則,該類就按《Java Language Specification》中 "Execution" 一章所描述的進行連結。

(5)、

protected final Class<?> findLoadedClass(String name)
如果 Java 虛擬機器已將此載入器記錄為具有給定二進位制名稱的某個類的啟動載入器,則返回該二進位制名稱的類。否則,返回 null

(6)、

protected Class<?> findClass(String name)
                      throws ClassNotFoundException
使用指定的二進位制名稱查詢類。此方法應該被類載入器的實現重寫,該實現按照委託模型來載入類。在通過父類載入器檢查所請求的類後,此方法將被 loadClass 方法呼叫。預設實現丟擲一個 ClassNotFoundException

(7)、

public static ClassLoader getSystemClassLoader()
返回委託的系統類載入器。該載入器是新的 ClassLoader 例項的預設委託父類載入器,通常是用來啟動應用程式的類載入器。

在執行時啟動序列的早期首先呼叫此方法,這時會建立系統類載入器並將其設定為呼叫 Thread 的上下文類載入器。

預設的系統類載入器是此類的一個與實現有關的例項。

(8)、Class.forName()方法forName方法是一個靜態的方法,用來載入class。

 

2、java中assert在什麼時候會被用到?

     assert可以在預計正常情況下不會到達的任何位置上放置斷言。

     斷言可以用於驗證傳遞給私有方法的引數,不應該用於驗證傳遞給公有方法的引數。

     也可以在非公有方法中利用斷言測試後置條件。

     斷言不應該以任何方式改變程式的狀態。

 

相關文章