代碼的組織機制.png
包
作用概念
包,類似于電腦中的文件夾,文件夾一般是一個層次結(jié)構(gòu),包也類似。
使用任何語言進(jìn)行編程都有一個相同的問題,就是命名沖突, Java中解決這個問題的方法就是包
關(guān)鍵字
- package
(1)聲明其包名
(2)包名和文件目錄結(jié)構(gòu)必須匹配 - import
(1)import需要放在package定義之后,類定義之前
(2)引入類
(3)Eclipse中,通過菜單"Source->Organize Imports"或?qū)?yīng)的快捷鍵ctrl+shift+O就可以自動管理引入類
import是編譯時概念,用于確定完全限定名,在運行時,只根據(jù)完全限定名尋找并加載類,編譯和運行時都依賴類路徑,類路徑中的jar文件會被解壓縮用于尋找和加載類。 - public/private/protected
(1)可見性范圍: private < 默認(rèn)(包) < protected < public
protected可見性包括包可見性
jar包
(1)編譯后的一個或多個包的Java class文件可以打包為一個文件,Java中打包命令為jar,打包后的文件后綴為.jar,一般稱之為jar包。
命令:jar -cvf <包名>.jar <最上層包名>
比如,對前面介紹的類打包,如果Hello.class位于E:\bin\shuo\laoma\Hello.class,則可以到目錄 E:\bin下,然后運行: jar -cvf hello.jar shuo
(2)jar包其實就是一個壓縮文件,可以使用解壓縮工具打開
代碼的組織機制
- 編譯
編譯是將源代碼文件變成一種字節(jié)碼,后綴是.class的文件
這個工作一般是由javac這個命令完成的 - 連接
接是在運行時動態(tài)執(zhí)行的
.class文件不能直接運行,運行的是Java虛擬機,執(zhí)行的就是java這個命令,這個命令解析.class文件,轉(zhuǎn)換為機器能識別的二進(jìn)制代碼,然后運行
連接就是根據(jù)引用到的類加載相應(yīng)的字節(jié)碼并執(zhí)行 - 過程
Java編譯和運行時,都需要以參數(shù)指定一個classpath,即類路徑。類路徑可以有多個,對于直接的class文件,路徑是class文件的根目錄,對于jar包,路徑是jar包的完整名稱(包括路徑和jar包名),在Windows系統(tǒng)中,多個路徑用分號;分隔,在其他系統(tǒng)中,以冒號:分隔。 在Java源代碼編譯時,Java編譯器會確定引用的每個類的完全限定名,確定的方式是根據(jù)import語句和classpath。如果import的是完全限定類名,則可以直接比較并確定。如果是模糊導(dǎo)入(import帶.*),則根據(jù)classpath找對應(yīng)父包,再在父包下尋找是否有對應(yīng)的類。如果多個模糊導(dǎo)入的包下都有同樣的類名,則Java會提示編譯錯誤,此時應(yīng)該明確指定import哪個類。 Java運行時,會根據(jù)類的完全限定名尋找并加載類,尋找的方式就是在類路徑中尋找,如果是class文件的根目錄,則直接查看是否有對應(yīng)的子目錄及文件,如果是jar文件,則首先在內(nèi)存中解壓文件,然后再查看是否有對應(yīng)的類。
寫在最后
都看到這里,保存思維導(dǎo)圖,順便給個贊唄!