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

Java 模組化核心:包、JAR 檔、編譯與類載入機制全解析

     編輯:Java 綜合教學

核心問題:如何組織代碼?

任何語言都面臨:命名衝突、源檔組織、第三方庫依賴、編譯連結。Java 透過包與JAR解決。

包:命名空間與代碼組織

宣告所屬包

package shuo.laoma;
public class Hello { ... }
  • package 陳述必須在源檔最前(註解除外)
  • 包名與目錄結構強制對應:E:\src\shuo\laoma\Hello.java

避免命名衝突的慣例

  • 以域名反序為前綴:org.apache、com.google
  • 無域名則用專案獨特前綴(如本文 shuo.laoma)
  • 內部專案確保組織內唯一即可

使用其他包的類

  • 同包類直接用類名
  • 不同包兩種方式:
    1. 完全限定名:java.util.Arrays.sort(arr)
    2. import 引入:import java.util.Arrays; 或 import java.util.*;
  • java.lang 包類(String、System)自動引入,無需 import
  • import 僅引入直接子包類,不遞歸;import java.util.*.* 無效
  • 同名類衝突時,只能 import 其中一個,其餘必須用完全限定名
  • IDE 自動管理 import:Eclipse Ctrl+Shift+O

包可見性

修飾符可見範圍
private同一類
default (包私有)同一直接包
protected同包 + 子類(即使不同包)
public任意處

注意:子包不是同一個包。shuo.laoma 與 shuo.laoma.inner 互不相干,無法互訪包私有成員。

JAR 檔:發布與依賴管理

建立 JAR

# 在編譯輸出根目錄下 (如 E:\bin)
jar -cvf hello.jar shuo
  • -c 建立、-v 顯示過程、-f 指定檔名
  • JAR 本質是 ZIP 壓縮檔,可用解壓工具查看

使用 JAR:Classpath

  • 編譯/執行時指定 -classpath 或 -cp
  • 路徑分隔:Windows ;、Linux/Mac :
  • 類檔根目錄或 JAR 完整路徑皆可加入 classpath

編譯與連結:從源碼到執行

編譯階段

  • javac 將 .java → .class (位元碼)
  • 根據 import 與 classpath 解析每個類的完全限定名
  • 模糊 import (.*) 衝突時編譯報錯,需明確指定

執行階段(動態連結)

  • java 命令啟動 JVM,載入主類
  • 根據完全限定名在 classpath 中尋找並載入 .class
  • JAR 檔在記憶體中解壓後查找
  • import 僅為編譯時概念,運行時只看完全限定名

小結

包解決命名與組織,JAR 解決發布與依賴,Classpath 連結編譯與運行。掌握這三者,是構建大型 Java 專案、排查 ClassNotFoundException/NoClassDefFoundError 的基石。

下一節將介紹 Java 中表示特定資料集合的機制——枚舉。

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