完全掌握java中的包機(jī)制_第1頁(yè)
完全掌握java中的包機(jī)制_第2頁(yè)
完全掌握java中的包機(jī)制_第3頁(yè)
完全掌握java中的包機(jī)制_第4頁(yè)
完全掌握java中的包機(jī)制_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、完全掌握java中的"包"機(jī)制作者:佚名    文章來(lái)源:未知    點(diǎn)擊數(shù):603    更新時(shí)間:2006-1-7 3:25:18 "包"機(jī)制是java中特有的,也是java中最基礎(chǔ)的知識(shí)。一些初學(xué)Java的朋友,通常象學(xué)其它語(yǔ)言一樣從教材上copy一些程序來(lái)運(yùn)行,可是卻常常遇到莫名其妙的錯(cuò)誤提示。這些問(wèn)題事實(shí)上都出在對(duì)"包"的原理不夠清楚。本文將就此問(wèn)題進(jìn)行深入闡述。 一、為什么Java中要有&quo

2、t;包"的概念? 以一言概之,java中"包"的引入的主要原因是java本身跨平臺(tái)特性的需求。因?yàn)閖ava中的所有的資源也是以文件方式組織,這其中主要包含大量的類文件需要組織管理。java中同樣采用了目錄樹形結(jié)構(gòu)。雖然各種常見(jiàn)操作系統(tǒng)平臺(tái)對(duì)文件的管理都是以目錄樹的形式的組織,但是它們對(duì)目錄的分隔表達(dá)方式不同,為了區(qū)別于各種平臺(tái),Java中采用了"."來(lái)分隔目錄。 二、Java中包結(jié)構(gòu)和平臺(tái)的銜接 java中的資源存在于不同平臺(tái)下時(shí)必然會(huì)有很大差異。因此跨平臺(tái)的Java包結(jié)構(gòu)和平臺(tái)之間必須通過(guò)一種方式來(lái)銜接到一起。事實(shí)上它們就是通過(guò)我們很熟悉的c

3、lasspath的設(shè)置來(lái)銜接到一起的。舉個(gè)例子: 我在Windows2000環(huán)境下的classpath設(shè)置如下: classpath = d:jdklibdt.jar; d:cjm類的銜接關(guān)系可以用下圖來(lái)表達(dá): 從圖中可以看出,java中的類的組織是"懸空"的,這樣的話,它們可以隨意放在任意平臺(tái)下,但是要在該平臺(tái)下正確找到一個(gè)類,則必須使用classpath來(lái)設(shè)置類所在目錄的前面一部分(即區(qū)別于平臺(tái)的部分)。在Java中常常把一棵類樹壓縮成一個(gè).jar文件,如圖中的rt.jar,這并不影響對(duì)類的查找,在指定環(huán)境變量時(shí)可以指定.jar文件所在目錄,也可以具體指明.jar的完全

4、查找路徑,即上例中的classpath中也可描述成:classpath = d:jdklib; d:cjm當(dāng)正確設(shè)置了平臺(tái)下的classpath環(huán)境變量時(shí),java跨平臺(tái)的特性就體現(xiàn)出來(lái)了。即你在編寫程序中,描述一個(gè)類時(shí),就不用具體指明它的完整路徑,而是僅僅指明Java中的類路徑就可以了,即指出圖1中豎線右邊的查找路徑就可以了。這樣的話,你編寫的程序拿到任何平臺(tái)下時(shí),只需要根據(jù)類文件的存放目錄來(lái)書寫相應(yīng)的classpath環(huán)境變量,而不用因?yàn)轭惖拇娣怒h(huán)境變化而修改程序。注意:Java中對(duì)于某個(gè)類的查找是把classpath中的每一項(xiàng)逐一連接,當(dāng)一個(gè)連接能夠正確找到相關(guān)類后,便不再向后查找。三、

5、正確使用"包" 在使用包的過(guò)程中有很多需要注意的小細(xì)節(jié),這里把常見(jiàn)的問(wèn)題都列舉如下: 1、對(duì)類路徑的設(shè)置通常有兩種方法: i)在系統(tǒng)的環(huán)境變量中設(shè)置,設(shè)置方法依據(jù)平臺(tái)而變; ii)以命令參數(shù)的形式來(lái)設(shè)置。 如:javac -classpath d:jdklibd:cjmedutestTestFile.JavaJava注意:i)javac和java命令有很大區(qū)別,可以這樣區(qū)分,javac是一個(gè)平臺(tái)命令,它對(duì)具體的平臺(tái)文件進(jìn)行操作,要指明被編譯的文件路徑。而Java是一個(gè)虛擬機(jī)命令,它對(duì)類操作,即對(duì)類的描述要用點(diǎn)分的描述形式,并且不能加擴(kuò)展名,還要注意類名的大小寫。 ii)有一

6、個(gè)很奇怪的問(wèn)題,即javac命令后面的classpath默認(rèn)包含當(dāng)前目錄(符合windows的習(xí)慣),可是在Java命令后面的classpath卻不包含當(dāng)前目錄,所以在它的classpath中一定不能忘了加上當(dāng)前目錄的描述,即加上"."。 2、在Java3、在Java程序中所有使用到的類都應(yīng)該清楚的指明這個(gè)類的查找路徑。一般有兩種方法指明: i)Java.io.*; ii)Java.io.FileReader("filename"); 注意:Java.lang包總是被默認(rèn)導(dǎo)入的。 4、類的目錄結(jié)構(gòu)一定要和類中第一句"包聲明"一致。如類

7、TestFile.class對(duì)應(yīng)的.Java文件的第一句必須包含:package edu.test; 確保類的存放路徑和類中指明的"包路徑"一致的方法一般有兩種: i)編寫.java文件時(shí)存放的目錄事先確定好,如TestFile.Java就直接放在edutest目錄下,然后用下面的語(yǔ)句編譯: javac  -classpath d:jdklibd:cjmedutestTestFile.Java 當(dāng)編譯完成后,產(chǎn)生的TestFile.class文件會(huì)出現(xiàn)在編譯命令中Java文件的描述路徑中。即出現(xiàn)在d:testedutest中 ii)通過(guò)-d參數(shù)的使用來(lái)編譯程序。如

8、使用下面的語(yǔ)句來(lái)編譯: javac  -d  d:cjm  d:tempTestFile.Java將在-d后指定的目錄d:cjm下面自動(dòng)按照packagek中指定的目錄結(jié)構(gòu)來(lái)創(chuàng)建目錄,并且將產(chǎn)生的.class文件放在這個(gè)新建的目錄下,即在d:cjm下面建立edutest目錄,然后產(chǎn)生的TestFile.class放在d:cjmedutest目錄下。 5、為了便于工程發(fā)布,可以將自己的類樹打成.jar文件。如將圖1中的edu下面的所有類文件打成一個(gè).jar文件,可以先轉(zhuǎn)到d:cjm目錄,再用下面的命令:jar -cvf test.jar edu這時(shí)會(huì)在d:test下

9、產(chǎn)生一個(gè)test.jar文件,此.jar文件中包含edu下的完整目錄結(jié)構(gòu)和文件。使用這個(gè).jar文件時(shí),只需在classpath中指明.jar文件的存放路徑即可。 6fin= new FileReader("resource/word.txt");而不應(yīng)該是:fin= new FileReader("././resource/word.txt");四、舉例 本例用于統(tǒng)計(jì)一個(gè)文本文件中的單詞數(shù),注釋中的編號(hào)對(duì)應(yīng)前一節(jié)的編號(hào): / TestFile.Javapackage edu.test; / - 4import Java.io.FileReader; /

10、 - 3import Java/ TestString.Javapackage edu.test;import Java.util.*;class TestString     int CountWord(String str)        StringTokenizer token = new StringTokenizer(str);        return token.countTokens();    兩個(gè).Java文件存放在d:temp目錄下,當(dāng)前目錄為d:temp使用下面的命令進(jìn)行編譯: d:temp>javac  -classpath d:jdklib  -

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論