下載本文檔
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 走進(jìn)小學(xué)活動(dòng)方案樣本(3篇)
- 二零二五年度二手房交易稅費(fèi)計(jì)算合同樣本3篇
- 二零二五年度辦公大樓智能化系統(tǒng)運(yùn)維合同2篇
- 2025年度涂料涂料工程招標(biāo)代理服務(wù)合同范本3篇
- 2025年三年級(jí)上學(xué)期英語(yǔ)教師工作總結(jié)范文(2篇)
- 煤礦綜掘綜合防塵管理制度(3篇)
- 自學(xué)書法系統(tǒng)課程設(shè)計(jì)
- 輪形課程設(shè)計(jì)
- 二零二五年度個(gè)人住房裝修貸款保證合同3篇
- 2025年高一班級(jí)工作計(jì)劃(二篇)
- 東風(fēng)集團(tuán)新能源汽車培訓(xùn)
- 2024-2030年中國(guó)廣電技術(shù)行業(yè)現(xiàn)狀分析及未來(lái)發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 鋼構(gòu)樓板合同范例
- 造影劑過(guò)敏的護(hù)理
- 蘇教版六年級(jí)上冊(cè)分?jǐn)?shù)四則混合運(yùn)算100題帶答案
- 潛水員潛水作業(yè)安全2024
- 以案促改心得體會(huì)
- 2024年公文寫作基礎(chǔ)知識(shí)競(jìng)賽試題庫(kù)及答案(共130題)
- 2023-2024學(xué)年浙江省麗水市蓮都區(qū)教科版三年級(jí)上冊(cè)期末考試科學(xué)試卷
- 失禁性皮炎病例護(hù)理查房課件
- 期末復(fù)習(xí)試題 (試卷)-2024-2025學(xué)年四年級(jí)上冊(cè)數(shù)學(xué)人教版
評(píng)論
0/150
提交評(píng)論