溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java的package和import機(jī)制原理是什么

發(fā)布時(shí)間:2021-10-15 17:18:29 來源:億速云 閱讀:136 作者:柒染 欄目:編程語言

java的package和import機(jī)制原理是什么,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

在說package、import機(jī)制前我們先來了解下java的CLASSPATH。

CLASSPATH顧名思義就是class的路徑,當(dāng)我們在系統(tǒng)中運(yùn)行某個(gè)java程序時(shí),它就會告訴系統(tǒng)在這些地方尋找這個(gè)class文件

CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar; 這是我們java默認(rèn)環(huán)境變量設(shè)置。

“.”的意思是在當(dāng)前這個(gè)文件夾找;%JAVA_HOME%\lib是在java安裝路徑的lib文件夾找;%JAVA_HOME%\lib\tools.jar是在java安裝路徑的lib文件夾的tools壓縮包中找。

現(xiàn)在讓我們來測試下吧:

在C:\DOM中新建HelloWorld.java

//: HelloWorld.java public class HelloWorld{  public static void main(String[] args){    System.out.println(“Hello World!”);  }}

首先javac HelloWorld.java,系統(tǒng)會在這個(gè)目錄中找到HelloWorld.java文件,編譯出HelloWorld.class文件。Java HelloWorld,系統(tǒng)會先調(diào)用CLASSPATH路徑,我們設(shè)置了“.”這個(gè)目錄,所以會在當(dāng)前目錄中找到HelloWorld.class。運(yùn)行成功。

**換個(gè)地方運(yùn)行這個(gè)程序

我們在C盤運(yùn)行java HelloWorld**

系統(tǒng)會現(xiàn)在CLASSPATH路徑尋找HelloWorld.class。但是在”.”(現(xiàn)在是C盤)找不到這個(gè)文件。我們現(xiàn)在把C:\DOM路徑加入到CLASSPATH

為了更新系統(tǒng)環(huán)境變量我們需要重新啟動(dòng)dos窗口

系統(tǒng)會在CLASSPATH中找到C:\DOM這個(gè)路徑,再找到HelloWorld.class這個(gè)文件。運(yùn)行成功?,F(xiàn)在我們明白了CLASSPATH的作用了^^

關(guān)于PACKAGE

我們來改寫這個(gè)程序,加入package

//: HelloWorld.java package a.b;public class HelloWorld{  public static void main(String[] args){    System.out.println(“Hello Wolrd!”);  }}

編譯成功,但是不能運(yùn)行。

系統(tǒng)在找到HelloWorld.class時(shí)就會讀取到package a.b;這個(gè)信息,這個(gè)告訴系統(tǒng)這個(gè)HelloWorld.class是要放在a文件夾的b文件夾中。但是現(xiàn)在我們的HelloWorld.class是在DOM這個(gè)文件夾。文件路徑和package不能對應(yīng),無法運(yùn)行。

現(xiàn)在我們來新建a/b這個(gè)兩個(gè)文件夾,然后把HelloWorld.class復(fù)制到b文件夾中。然后再運(yùn)行java HelloWorld

對不起!還是沒有運(yùn)行成功。系統(tǒng)在CLASSPATH中尋找HelloWorld.class文件,但是這個(gè)文件被隱藏在a文件夾中的b文件夾。我們來試試java a.b.HelloWorld

運(yùn)行成功了,系統(tǒng)在CLASSPATH中的“.”文件夾找到a文件夾,然后b文件夾,找到HelloWorld.class文件?,F(xiàn)在明白package的作用了,它是一定要符合從CLASSPATH出發(fā)的目錄結(jié)構(gòu)的。

關(guān)于IMPORT

Import的作用是當(dāng)你調(diào)用另一個(gè)class的時(shí)候,告訴系統(tǒng),要找哪里才能找到這個(gè)class。

我們在C:\DOM的目錄下寫一個(gè)調(diào)用a\b\HelloWorld.class的程序。

//: TestHelloWorld.javaimport a.b.HelloWorld;public class TestHelloWorld{  public static void main(String[] args){    HelloWorld hw=new HelloWorld();    hw.main(args);  //調(diào)用HelloWorld中的main()函數(shù),args是引數(shù),會打印出HelloWorld!  }}

編譯運(yùn)行成功!

編譯:系統(tǒng)在個(gè)這個(gè)文件夾中找到TestHelloWorld.java文件,檢查import a.b.HelloWorld; 找CLASSPATH中找到a\b\HelloWorld.class。編譯通過完成!

運(yùn)行:系統(tǒng)現(xiàn)在CLASSPATH中找到TestHelloWorld.class,然后讀取import a.b.HelloWorld; 導(dǎo)入HelloWorld.class,運(yùn)行成功!

關(guān)于java的package和import機(jī)制原理是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI