1、定義兩個(gè)public類

創(chuàng)新互聯(lián)是一家專業(yè)提供訥河企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都做網(wǎng)站、HTML5建站、小程序制作等業(yè)務(wù)。10年已為訥河眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
1)TestA.java
1
2
3
4
public class TestA{//定義一個(gè)類TestA,并存成TestA.java文件
public void tb(){//定義類TestA的一個(gè)方法tb
}
}
2)TestB.java
1
2
3
4
public class TestB{//定義一個(gè)類TestB,并存成TestB.java文件
public void t1(){//定義類TestB的一個(gè)方法t1
}
}
2、TestA.java文件中的類TestA調(diào)用TestB.java中的類TestB
1
2
3
4
public void tb(){//類TestA的方法
TestB tb = new TestB();//實(shí)例化TestB
tb.t1();//調(diào)用TestB的方法,實(shí)現(xiàn)調(diào)用另一個(gè)文件中的類
1. 那么包名和實(shí)際物理路徑有什么關(guān)系?
答: 包名必須出現(xiàn)在實(shí)際路徑中的一部分, 只是一段, 不可能是絕對(duì)路徑. 而這個(gè)段的起點(diǎn), 就是包含了classpath目錄的一個(gè).
可以看到如下代碼, 是eclipse 自動(dòng)生成的 .classpath文件, 其中classpath就包含了testsrc, src, 而這兩個(gè)目錄下都有個(gè)子目錄 coolUnit, 這個(gè)就是包名的開始.
?xml version="1.0" encoding="UTF-8"?
classpath
classpathentry kind="src" path="src"/
classpathentry kind="src" path="testsrc"/
classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/
classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/
classpathentry kind="output" path="bin"/
/classpath
2. 相同包名 如果可以存儲(chǔ)在不同物理路徑下, java 編譯器如何找到對(duì)應(yīng)的類 ?
答: 當(dāng)然可以存儲(chǔ)在不同的物理路徑下, 只不過這兩個(gè)路徑中, 有一部分必須相同, 即包名包括的部分. 置于java編譯器如何找到, 簡單, 就是把從包名的起點(diǎn)的上層目錄添加到classpath中了, 這樣就可以找到對(duì)應(yīng)了類了. 類似上邊的testsrc, src, 這兩個(gè)目錄都被添加進(jìn)了classpath(當(dāng)然這個(gè)工作是eclipse替我們完成的, 如果是我們自己編譯, 不借助eclipse, 就需要指定 javac –classpath 把這兩個(gè)目錄加進(jìn)去)
3. 這里肯定跟classpath 有關(guān), 不可能你隨便寫個(gè)java類, java 編譯器都能找到, 那么如何引入自己寫的類呢?
如何引用自己的類的, 就是將自己的類的包名的起點(diǎn)的上層目錄作為 javac –classpath參數(shù)傳入, 這樣的目的是讓java編譯器找到你的類所在的位置.
綜上: 包名是抽象出來的類的空間, 雖然在物理上存儲(chǔ)需要文件夾配合層次, 但是關(guān)鍵, 這個(gè)層次不是絕對(duì)路徑, 只是路徑中的一部分, 所以, 我們完全可以將代碼放在不同路徑下, 只要路徑中對(duì)應(yīng)包名的部分相同就可以了.
包
為了更好地組織類,Java提供了包機(jī)制。包是類的容器,用于分隔類名空間。如果沒有指定包名,所有的示例都屬于一個(gè)默認(rèn)的無名包.
Java中的包一般均包含相關(guān)的類,例如,所有關(guān)于交通工具的類都可以放到名為Transportation的包中.
包語句格式:
package pkg1[.pkg2[.pkg3…]];
程序中如果有package語句,該語句一定是源文件中的第一條可執(zhí)行語句,它的前面只能有注釋或空行。另外,一個(gè)文件中最多只能有一條package語句.
包的名字有層次關(guān)系,各層之間以點(diǎn)分隔。包層次必須與Java開發(fā)系統(tǒng)的文件系統(tǒng)結(jié)構(gòu)相同(并非絕對(duì)路徑)。通常包名中全部用小寫字母,這與類名以大寫字母開頭,且各字的首字母亦大寫的命名約定有所不同。
當(dāng)使用包說明時(shí),程序中無需再引用(import)同一個(gè)包或該包的任何元素。import語句只用來將其他包中的類引入當(dāng)前名字空間中。而當(dāng)前包總是處于當(dāng)前名字空間中.
如果文件聲明如下:
package java.awt.image
則此文件必須存放在Windows的java\awt\image目錄下或unix的java/awt/image目錄下。
問題出現(xiàn)了: 因?yàn)槁窂讲豢赡苁墙^對(duì)的, 即從根目錄開始一直向下, 所以目錄的開始位置, 只需要是classpath包含的位置就可以了.
這才是問題解決的關(guān)鍵. 從這點(diǎn)說, 包名是抽象的.
如果在的是同一目錄,類是不用導(dǎo)入的。直接使用就行。
java中 如果想導(dǎo)入其他包中的類,可以用 import關(guān)鍵字導(dǎo)入;例:import com.A;(導(dǎo)入com包中的A類)
如果用的是(myeclipse 或者eclipse工具的話 ,)可以使用快捷鍵 Ctrl+shift+o就會(huì)自動(dòng)導(dǎo)入了。
放到任意文件夾都可以,看你的管理方式。
1、放到和程序目錄下的某個(gè)文件夾中。
//?假設(shè)圖片放到程序運(yùn)行目錄的img目錄下
BufferedImage?img?=?ImageIO.read(new?File("img/my.png"));
2、放到源文件中,和讀取類在同一目錄,使用時(shí)圖片要按包名打包到j(luò)ar中
//?假設(shè)圖片放到src下,和MyImages在一個(gè)目錄
BufferedImage?img?=?ImageIO.read(MyImages.class.getResource("my.png"));
3、放到源文件中,但在獨(dú)立文件夾中,使用時(shí)圖片要按包名打包到j(luò)ar中
//?假設(shè)圖片放到src下的img目錄中?
BufferedImage?img?=?ImageIO.read(MyImages.class.getResource("res/my.png"));
網(wǎng)頁題目:java代碼中引用目錄,引用目錄是什么
文章起源:http://chinadenli.net/article32/hshepc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、建站公司、用戶體驗(yàn)、網(wǎng)站維護(hù)、微信小程序、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)