首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

給 Java 初學者的實戰經驗分享:類加載、ClassPath 與 JDK/JRE 區別

     編輯:Java 相關知識

1. 親眼見證動態類加載

啟動程式時加上 java -verbose:class YourClass,控制台會印出所有被加載的 .class 檔案順序。你會發現:只有真正用到該類的實例時,才會觸發加載,單純宣告引用不會加載。這就是「動態加載」的具體體現。

2. 類檔案搜尋機制與三層 ClassLoader

建議初學者先在命令列用 javac -classpath / java -classpath 手動編譯執行,理解搜尋順序:

  1. Bootstrap ClassLoader(jre/lib/rt.jar 等核心庫)——最高優先級,C++ 實作,getClassLoader() 回傳 null。
  2. Extension ClassLoader(jre/lib/ext)。
  3. Application ClassLoader(classpath 指定路徑)——預設搜尋當前目錄。

搜尋採「向上委派」:找不到才找父層,不會向下找。可用 new A().getClass().getClassLoader() 驗證類由哪層加載。

3. JDK 與 JRE 的實際差異

  • JRE = JVM (jre/bin/client/jvm.dll) + 核心類庫 (jre/lib/*.jar) —— 純運行環境。
  • JDK = JRE + 開發工具 (javac, jar 等) + 雙 JVM(client 適合啟動快、server 適合長跑優化)。

環境變數陷阱:安裝 JRE 時會自動把 java.exe 複製到 %SystemRoot%\system32,導致 path 中 jdk/bin 排在後面時,實際執行的是 JRE 版 java。可測試:刪除 jdk/bin/java.exe 後程式仍能跑。

給新人的建議

打好基礎比追新技術更重要;多動手、多驗證、多在命令列實驗,才能真正內化核心機制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved