概念
包指的是一個程序的目錄。在最早的時候如果要開發一個程序,只需要定義個*.java文件,然後再該文件中編寫所需的類,編譯之後程序將直接保存在當前目錄下,而利用包可以實現同一個程序的拆分。
爲了更好地組織類,Java 提供了包機制,用於區別類名的命名空間。
Java 使用包(package)這種機制是爲了防止命名衝突,訪問控制,提供搜索和定位類(class)、接口、枚舉(enumerations)和註釋(annotation)等。爲這些類型提供訪問保護和命名空間管理的功能。
包語句的語法格式爲:
package pkg1[.pkg2[.pkg3…]];
示例:
package net.java.util;
public class hello{
public static void main(String args[]){
System.out.println("hello world");
}
}
那麼它的路徑應該是 net/java/util/hello.java 這樣保存的。 package(包) 的作用是把不同的 java 程序分類保存,更方便的被其他 java 程序調用。
最好不要自己手工創建這些目錄,應該使用命令自動生成,如下:
- 編譯: javac -d . hello.java
“-d”:表示生成目錄,根據package的定義生成。
“.” :表示保存的路徑,如果爲"."表示在當然所在的路徑下生成。
類都應當定義在包中,那麼完整的類名就是:"包.類"。
包的作用
- 把功能相似或相關的類或接口組織在同一個包中,方便類的查找和使用。
- 如同文件夾一樣,包也採用了樹形目錄的存儲方式。同一個包中的類名字是不同的,不同的包中的類的名字是可以相同的,當同時調用兩個不同包中相同類名的類時,應該加上包名加以區別。因此,包可以避免名字衝突。
- 包也限定了訪問權限,擁有包訪問權限的類才能訪問某個包中的類。
包的導入
爲了能夠使用某一個包的成員,我們需要在 Java 程序中明確導入該包。使用 import 語句可完成此功能。
在 java 源文件中 import 語句應位於 package 語句之後,所有類的定義之前,可以沒有,也可以有多條,其語法格式爲:
import package1[.package2…].(classname|*);
使用“包.*”通配符,表示導入程序裏面所需要的類,而不是全部導入。
如果在一個包中,一個類想要使用本包中的另一個類,那麼該包名可以省略。
常用系統包
- java.lang: 包含了String、object、Interger等類。從jdk1.1之後,此包會自動導入。
- java.lang.reflect:反射包;
- java.util: java的工具包,提供了大量工具類。
- java.util.regex: 正則工具包。
- java.text: 國際化處理包。
- java.io: 進行輸入、輸出處理,以及文件處理。
- java.net: 網絡編程開發包。
- java.sql: 數據庫程序開發包。
- java.applet: Applet程序開發包,已廢棄。Applet是嵌套在網頁上的java程序,採用繪圖的方式完成網頁的顯示,實現一些動態效果,隨着時間的發展已經不再使用了。
-
java.awt、javax.swing:圖形界面開發包。主要進行單機版程序界面開發。
- jdk1.0的時候推出了awt開發包,但是該包大量使用了windows api,導致程序缺乏可移植性。
- jdk1.2的時候推出了javax.swing開發包,採用了java自己編寫的api,是一個輕量級的GUI工具包。
jar 命令
在任何一個項目中肯定會存在大量的.class文件,如果將這些.class文件直接交付,會導致文件過多,而且程序非常沒有結果,所以在交付用戶使用之前,會使用jar命令將包中的class文件壓縮成一個文件。
生成的jar文件不能直接使用,需要將其文件路徑配置到CLASSPATH中,如果使用第三方jar文件,也必須配置。
補充:CLASSPATH是java程序解釋類文件時所使用的加載路徑。