15.java 包的定義和使用

概念

包指的是一個程序的目錄。在最先的時候若是要開發一個程序,只須要定義個*.java文件,而後再該文件中編寫所需的類,編譯以後程序將直接保存在當前目錄下,而利用包能夠實現同一個程序的拆分。java

爲了更好地組織類,Java 提供了包機制,用於區別類名的命名空間。sql

Java 使用包(package)這種機制是爲了防止命名衝突,訪問控制,提供搜索和定位類(class)、接口、枚舉(enumerations)和註釋(annotation)等。爲這些類型提供訪問保護和命名空間管理的功能。數據庫

包語句的語法格式爲:編程

package pkg1[.pkg2[.pkg3…]];

示例:windows

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 程序調用。api

最好不要本身手工建立這些目錄,應該使用命令自動生成,以下:網絡

  • 編譯: javac -d . hello.java

    「-d」:表示生成目錄,根據package的定義生成。app

    「.」 :表示保存的路徑,若是爲"."表示在固然所在的路徑下生成。工具

類都應當定義在包中,那麼完整的類名就是:"包.類"。.net

包的做用

  1. 把功能類似或相關的類或接口組織在同一個包中,方便類的查找和使用。
  2. 如同文件夾同樣,包也採用了樹形目錄的存儲方式。同一個包中的類名字是不一樣的,不一樣的包中的類的名字是能夠相同的,當同時調用兩個不一樣包中相同類名的類時,應該加上包名加以區別。所以,包能夠避免名字衝突。
  3. 包也限定了訪問權限,擁有包訪問權限的類才能訪問某個包中的類。

包的導入

爲了可以使用某一個包的成員,咱們須要在 Java 程序中明確導入該包。使用 import 語句可完成此功能。

在 java 源文件中 import 語句應位於 package 語句以後,全部類的定義以前,能夠沒有,也能夠有多條,其語法格式爲:

import package1[.package2…].(classname|*);

使用「包.*」通配符,表示導入程序裏面所須要的類,而不是所有導入。

若是在一個包中,一個類想要使用本包中的另外一個類,那麼該包名能夠省略。

經常使用系統包

  1. java.lang: 包含了String、object、Interger等類。從jdk1.1以後,此包會自動導入。
  2. java.lang.reflect:反射包;
  3. java.util: java的工具包,提供了大量工具類。
  4. java.util.regex: 正則工具包。
  5. java.text: 國際化處理包。
  6. java.io: 進行輸入、輸出處理,以及文件處理。
  7. java.net: 網絡編程開發包。
  8. java.sql: 數據庫程序開發包。
  9. java.applet: Applet程序開發包,已廢棄。Applet是嵌套在網頁上的java程序,採用繪圖的方式完成網頁的顯示,實現一些動態效果,隨着時間的發展已經再也不使用了。
  10. 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程序解釋類文件時所使用的加載路徑。

相關文章
相關標籤/搜索