理解Java中【包】的概念


Java中用package關鍵字定義一個包,下面通過幾個實驗,理解Java中的包的概念和作用。

實驗1:先看一個無包的情形

在G盤下新建一個Test.java,如圖1:


寫下面這些代碼

<span style="font-size:24px;">public class PackageTest{

    public static void main(String args[]){

	System.out.println("Hello World!");    
    
    }
}</span>
然后保存,然后打開控制台(win+R--輸入cmd--回車即可),輸入  G:--回車  進入G盤,輸入  javac PackageTest.java  編譯PackageTest.java,具體如下圖:


編譯成功之后,會發現與PackageTest.java同目錄下多了一個文---PackageTest.class,運行的時候執行的就是該文件,如下圖:


運行這個程序,在控制台輸入 java PackageTest ,運行結果如下:


這是沒有包的情形,下面看看有包的情形。

實驗2:

將實驗1中的G盤下的PackageTest.class文件刪除,打開PackageTest.java,在前面加上這些內容:

<span style="font-size:24px;">package p1.p2.p3;
</span>

再在控制台輸入javac PackageTest.java編譯程序,如果沒有其他提示證明編譯成功,編譯結果如下:


同樣可以查看G盤下又多了一個PackageTest.class文件,用同樣的方法運行程序,在控制台輸入java PackageTest,結果是這樣的:


意思就是找不到PackageTest這個類,為什么呢?因為在PackageTest.java中定義了包。如何解決這個問題呢?

接下來,我們在G盤下新建一個文件夾p1,在p1下新建一個文件夾p2,在p2下新建一個文件p3,再把G盤下的PackageTest.class文件放到文件夾p3中,如下圖:


再在控制台運行這個程序,輸入java PackageTest,結果如下:


還是找不到這個類,為什么呢?因為這個類的名字不是PackageTest了,而是p1.p2.p3.PackageTest了,所以正確運行這個程序的方法是:

在控制台輸入 java p1.p2.p3.PackageTest 就能得到想要的結果了:


從上面的實驗可以看出:

1.包對.java源文件沒有作用,只對.class字節碼文件起作用。

2.包相當於一個字節碼的相對路徑。例如上例中PackageTest.class的絕對路徑就是:

G:\p1\p2\p3

引入包可以防止文件名之間的沖突(例如一個公司的網站域名為:www.abc.def.cn,則這個公司的程序員可以將所有的包設置為cn.def.abc)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM