這里是第一個文件,命名為JavaSE_01.java,我在這個文件里面聲明了一個m1()方法,通過包機制,我將在另外一個文件夾里訪問這個文件里的東西,確切的說是訪問這個文件生成的一個class文件;package com.jaovo.webTeah.db;/* * Java包機制 * * 也就是軟件包機制,軟件世界中的兩大難題:命名和緩存; * * 在程序命名中取一個言簡意賅的名字很難,有時候名字取出來發現這個名字已經存在,包括ip,域名,MAC地址沖突等,在計算機中都出現了命名沖突的問題,命名太長又不方便. * 而這個時候封裝的思想,劃分區域,域的概念,命名空間的概念,IP段的概念都分別解決了他們各自的名字沖突的問題. * 這個時候Java借用了域名的封裝方式(做程序開發的,每個人都會有自己的域名),提出了軟件包的概念; * * 1. Java軟件包的目的:解決類的命名(也是文件的命名,因為類名和文件名相同) * 在類前面加一個命名空間(相當于給文件加一個文件夾) * 2. 解決方式: * 通常采用公司域名的倒序方式(這個是唯一的) * 比如大家熟知的網站,名字都是hPPT://www.jaovo.com....是吧 * 包機制的寫法是: * com.jaovo.webTeah.bd * com.baidu.webTeah.bd * com.baidu.webTeah.page * ....... * 包機制的作用: * 命名空間,生成一個文件目錄(比如你開文件夾1,里面是文件夾2,再打開就是文件夾3,以此類推形成一個目錄形式) * 如果要調用包里的東西就需要這個文件目錄,同過導包找到他,再調用他; * 3. 用法: * 在java源文件的第一行引用package語句定義包: * 如package com.jaovo.webTeah.db; * 他會自動生成一個文件目錄,每個文件夾都是上述的用點隔開的名字,按照順序生成; * 如果需要用里面的東西就需要導包,就需要import: * 如import com.jaovo.webTeah.db; * 就是調用db這個文件夾里的文件內容; * 還有一種寫法就是: * import com.jaovo.*; * 就是調用jaovo這個文件夾里的所有東西,也包括db吧; * 4. 文件目錄的生成 * 還有最后一步,就是編譯和運行; * 編譯: javac -d ./ -encoding utf-8 JavaSE.java * ./就是本文件夾里生成,JavaSE.java是我這個源文件的文件名 * 編譯后就會生成一個文件目錄,并且會把我這個源代碼生成的class文件保存到文件目錄中我指定的位置; * 運行: java com.jaovo.webTeah.db.JavaSE.class * * 編譯和運行都是在CMD中是實現,如果用的是VIM編譯的話,直接":sh"敲回車就會進入編譯窗; * * 這里我會截屏展示一下效果: */public class JavaSE_01{ public static void main(String[] args){ System.out.這個文件編寫完以后,通過CMD編譯一個class文件到指定目錄下(附圖):
紅色圈出的位置是我在CMD上打的內容;
這里是自動生成的文件目錄,以及文件目錄下的class文件:
同樣是有紅筆圈出來;
以下是第二個文件:
package com.jaovo.webTeah;/* * 這里我寫了兩個源代碼,把上一個源文件的class文件編譯到com.jaovo.webTeah.db這個文件夾下; * 這是第二個源代碼,我把他的class文件編譯到上個class文件的上一級,也就是在com.jaovo.webTeah文件夾下; * 然后我在JavaSE_02.java文件中調用JavaSE_01文件中的m1()方法; */import com.jaovo.webTeah.db.*;//這里導包,導入JavaSE_01生成的類文件;public class JavaSE_02{ public static void main(String[] args){ JavaSE_01 s = new JavaSE_01();//對JavaSE_01實例化對象; s.m1();//調用JavaSE_01中的m1()方法(我這個文件里面是沒有聲明任何方法的) }}下面是JavaSE_02.java文件的編譯:
class文件存放位置:
下面是我運行的JavaSE_02.java文件,以及輸出的結果:
最后結果是10,是JavaSE_01.java文件中m1方法內的結果;
新聞熱點
疑難解答