




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、完全掌握java中的"包"機制作者:佚名 文章來源:未知 點擊數:603 更新時間:2006-1-7 3:25:18 "包"機制是java中特有的,也是java中最基礎的知識。一些初學Java的朋友,通常象學其它語言一樣從教材上copy一些程序來運行,可是卻常常遇到莫名其妙的錯誤提示。這些問題事實上都出在對"包"的原理不夠清楚。本文將就此問題進行深入闡述。 一、為什么Java中要有&quo
2、t;包"的概念? 以一言概之,java中"包"的引入的主要原因是java本身跨平臺特性的需求。因為java中的所有的資源也是以文件方式組織,這其中主要包含大量的類文件需要組織管理。java中同樣采用了目錄樹形結構。雖然各種常見操作系統平臺對文件的管理都是以目錄樹的形式的組織,但是它們對目錄的分隔表達方式不同,為了區別于各種平臺,Java中采用了"."來分隔目錄。 二、Java中包結構和平臺的銜接 java中的資源存在于不同平臺下時必然會有很大差異。因此跨平臺的Java包結構和平臺之間必須通過一種方式來銜接到一起。事實上它們就是通過我們很熟悉的c
3、lasspath的設置來銜接到一起的。舉個例子: 我在Windows2000環境下的classpath設置如下: classpath = d:jdklibdt.jar; d:cjm類的銜接關系可以用下圖來表達: 從圖中可以看出,java中的類的組織是"懸空"的,這樣的話,它們可以隨意放在任意平臺下,但是要在該平臺下正確找到一個類,則必須使用classpath來設置類所在目錄的前面一部分(即區別于平臺的部分)。在Java中常常把一棵類樹壓縮成一個.jar文件,如圖中的rt.jar,這并不影響對類的查找,在指定環境變量時可以指定.jar文件所在目錄,也可以具體指明.jar的完全
4、查找路徑,即上例中的classpath中也可描述成:classpath = d:jdklib; d:cjm當正確設置了平臺下的classpath環境變量時,java跨平臺的特性就體現出來了。即你在編寫程序中,描述一個類時,就不用具體指明它的完整路徑,而是僅僅指明Java中的類路徑就可以了,即指出圖1中豎線右邊的查找路徑就可以了。這樣的話,你編寫的程序拿到任何平臺下時,只需要根據類文件的存放目錄來書寫相應的classpath環境變量,而不用因為類的存放環境變化而修改程序。注意:Java中對于某個類的查找是把classpath中的每一項逐一連接,當一個連接能夠正確找到相關類后,便不再向后查找。三、
5、正確使用"包" 在使用包的過程中有很多需要注意的小細節,這里把常見的問題都列舉如下: 1、對類路徑的設置通常有兩種方法: i)在系統的環境變量中設置,設置方法依據平臺而變; ii)以命令參數的形式來設置。 如:javac -classpath d:jdklibd:cjmedutestTestFile.JavaJava注意:i)javac和java命令有很大區別,可以這樣區分,javac是一個平臺命令,它對具體的平臺文件進行操作,要指明被編譯的文件路徑。而Java是一個虛擬機命令,它對類操作,即對類的描述要用點分的描述形式,并且不能加擴展名,還要注意類名的大小寫。 ii)有一
6、個很奇怪的問題,即javac命令后面的classpath默認包含當前目錄(符合windows的習慣),可是在Java命令后面的classpath卻不包含當前目錄,所以在它的classpath中一定不能忘了加上當前目錄的描述,即加上"."。 2、在Java3、在Java程序中所有使用到的類都應該清楚的指明這個類的查找路徑。一般有兩種方法指明: i)Java.io.*; ii)Java.io.FileReader("filename"); 注意:Java.lang包總是被默認導入的。 4、類的目錄結構一定要和類中第一句"包聲明"一致。如類
7、TestFile.class對應的.Java文件的第一句必須包含:package edu.test; 確保類的存放路徑和類中指明的"包路徑"一致的方法一般有兩種: i)編寫.java文件時存放的目錄事先確定好,如TestFile.Java就直接放在edutest目錄下,然后用下面的語句編譯: javac -classpath d:jdklibd:cjmedutestTestFile.Java 當編譯完成后,產生的TestFile.class文件會出現在編譯命令中Java文件的描述路徑中。即出現在d:testedutest中 ii)通過-d參數的使用來編譯程序。如
8、使用下面的語句來編譯: javac -d d:cjm d:tempTestFile.Java將在-d后指定的目錄d:cjm下面自動按照packagek中指定的目錄結構來創建目錄,并且將產生的.class文件放在這個新建的目錄下,即在d:cjm下面建立edutest目錄,然后產生的TestFile.class放在d:cjmedutest目錄下。 5、為了便于工程發布,可以將自己的類樹打成.jar文件。如將圖1中的edu下面的所有類文件打成一個.jar文件,可以先轉到d:cjm目錄,再用下面的命令:jar -cvf test.jar edu這時會在d:test下
9、產生一個test.jar文件,此.jar文件中包含edu下的完整目錄結構和文件。使用這個.jar文件時,只需在classpath中指明.jar文件的存放路徑即可。 6fin= new FileReader("resource/word.txt");而不應該是:fin= new FileReader("././resource/word.txt");四、舉例 本例用于統計一個文本文件中的單詞數,注釋中的編號對應前一節的編號: / 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(); 兩個.Java文件存放在d:temp目錄下,當前目錄為d:temp使用下面的命令進行編譯: d:temp>javac -classpath d:jdklib -
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年尾礦綜合利用技術突破與生態修復模式探索報告
- 2025年制造業智能化生產線生產數據安全研究報告
- 內蒙古興安盟2025屆七下英語期末調研模擬試題含答案
- 江蘇省淮安市清江浦區2025年英語八年級第二學期期末聯考試題含答案
- 閱讀教育實施成果與策略優化
- 家庭教育促進法解讀(小學生版)
- 公正主題班會課課件
- 2024版經導管主動脈瓣置換術臨床路徑專家共識解讀
- 2020年內蒙古自治區消防應急燈具產品質量監督抽查方案
- 八年級家長會課件教學
- 堅持嚴格陣地管理制度
- T/BECC 002-2024智算中心技術要求和評估方法
- 2025年廣西公需科目答案03
- 2025屆江蘇省徐州市名校七下數學期末達標檢測試題含解析
- 2025年山東夏季高中學業水平合格考模擬生物試卷(含答案)
- 大連海事大學育鯤輪電機員培訓課件詳解
- GB/T 45577-2025數據安全技術數據安全風險評估方法
- AI與VR在麻醉教學中的應用及個性化學習路徑探討
- IgG4腎病的診斷和治療
- 中國啤酒籃行業市場發展前景及發展趨勢與投資戰略研究報告2025-2028版
- 2025年中國直接結合鎂鉻磚數據監測研究報告
評論
0/150
提交評論