久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Java 中帶包(創(chuàng)建及引用)的類(lèi)的編譯與調(diào)試

      Java 源程序的編譯大家都知道,也就是 cmd 中到源文件所在目錄下 javac **.java 即可,當(dāng)程序中有包聲明還能簡(jiǎn)簡(jiǎn)單單的直接 javac **.java 嗎?答案當(dāng)然是 no,下面舉個(gè)簡(jiǎn)單的例子證明一下直接 javac **.java 會(huì)怎么樣。

      如下:F:javaweb2班20160531目錄下有A.java 文件,注意源文件中有包聲明:

      實(shí)例

      package mypack; public class A { String name; int age; public void setName(String _name){ this.name =_name; } public void setAge(int _age){ this.age = _age; } public String getName(){ return this.name; } public int getAge(){ return this.age; } public static void main(String[] args){ A a = new A(); //a.setName("zs"); a.name="zs"; a.setAge(18); System.out.println(a.getName()+a.getAge()); } }

      Java 中帶包(創(chuàng)建及引用)的類(lèi)的編譯與調(diào)試

      現(xiàn)在對(duì) A.java 直接進(jìn)行編譯 javac A.java 結(jié)果如下:

      Java 中帶包(創(chuàng)建及引用)的類(lèi)的編譯與調(diào)試

      我們可以清楚地看到當(dāng)前目錄下出現(xiàn)了A.class字節(jié)碼文件,就這樣能不能直接運(yùn)行呢?試試吧!

      Java 中帶包(創(chuàng)建及引用)的類(lèi)的編譯與調(diào)試

      出現(xiàn)了這樣的錯(cuò)誤,原因是我們?cè)?A.java 中有包聲明,當(dāng)執(zhí)行 A.java 源文件時(shí) java 虛擬機(jī)首先會(huì)在 A.java 當(dāng)前目錄尋找字節(jié)碼文件,雖然這下找到了,但是因?yàn)樵?A.java 中有包聲明,java 虛擬機(jī)緊接著去包目錄下尋找有沒(méi)有 A.class 字節(jié)碼文件,這下找到了才能夠成功執(zhí)行,不信我們做做實(shí)驗(yàn)?。ㄟ@里我再教教大家怎么編譯有包聲明的 A.java,也就是打包編譯 javac -d . A.java 即可)

      Java 中帶包(創(chuàng)建及引用)的類(lèi)的編譯與調(diào)試

      這下就打包編譯成功了,這時(shí)我們可以看到 mypack 目錄下出現(xiàn)了 A.class 文件,下面試試執(zhí)行吧

      Java 中帶包(創(chuàng)建及引用)的類(lèi)的編譯與調(diào)試

      這時(shí)我們發(fā)現(xiàn)執(zhí)行還是不能通過(guò)??這時(shí)為什么呢?這里是許多新手遇到的問(wèn)題,在這里大家必須謹(jǐn)記一點(diǎn):Java 命令的參數(shù)是”類(lèi)的完整類(lèi)名”,而不是”文件名”。

      這個(gè)源程序的完整類(lèi)名應(yīng)該是 mypack.A,因此應(yīng)該這么寫(xiě):java mypack.A

      Java 中帶包(創(chuàng)建及引用)的類(lèi)的編譯與調(diào)試

      這下就可以成功執(zhí)行了!

      別急??!下面還有更精彩的!作為包的使用怎么可能會(huì)不講解一下包的導(dǎo)入創(chuàng)建編譯呢!

      這次我們引入另外一個(gè)測(cè)試類(lèi) Test.java,代碼如下:

      實(shí)例

      import mypack.A; public class Test{ public static void main(String[] args){ A a = new A(); a.setName("zs"); //a.name="zs"; a.setAge(18); System.out.println(a.getName()+a.getAge()); } }

      編譯執(zhí)行如下:

      Java 中帶包(創(chuàng)建及引用)的類(lèi)的編譯與調(diào)試

      結(jié)果意料之中肯定是能夠編譯執(zhí)行的,執(zhí)行流程是這樣的:Test.java 編譯之后生成的字節(jié)碼文件在當(dāng)前目錄(編譯時(shí)他會(huì)尋找 mypack 中是否有 A.class 文件,若無(wú),編譯不通過(guò)),執(zhí)行時(shí),由于 Test.java 中沒(méi)有包聲明,java 虛擬機(jī)首先在當(dāng)前目錄找到 Test.class 就會(huì)執(zhí)行,執(zhí)行到程序中引用到A類(lèi)的地方,然后 java 虛擬機(jī)在當(dāng)前目錄看是否有 A.class 字節(jié)碼文件,這時(shí)即使發(fā)現(xiàn)了也會(huì)根據(jù)源程序中的包導(dǎo)入進(jìn)入包中尋找 A.class,找到才能執(zhí)行成功(其實(shí)在編譯階段就已經(jīng)尋找了?。?/p>

      下面更進(jìn)一步:若我們給測(cè)試類(lèi) Test.java 加上包聲明 package mypack1;

      這時(shí)我們對(duì) Test.java 進(jìn)行打包編譯,這里我又要給大家講解兩個(gè)知識(shí)點(diǎn):1.打包編譯時(shí),會(huì)自動(dòng)創(chuàng)建包目錄,不需要自己新建包名文件夾;2.當(dāng)當(dāng)前目錄有多個(gè)java文件需要編譯或打包編譯時(shí),javac -d . *.java 指令可以給當(dāng)前目錄下的所有 java 文件根據(jù)程序中是否有包聲明進(jìn)行編譯或打包編譯。

      這時(shí)我們又該如何執(zhí)行 Test.java 文件呢?java Test.java 嗎??顯然這樣是不行的,還記得我前面講過(guò)的么:Java 命令的參數(shù)是”類(lèi)的完整類(lèi)名”,而不是”文件名”。

      因此我們需要這樣執(zhí)行:

      Java 中帶包(創(chuàng)建及引用)的類(lèi)的編譯與調(diào)試

      這樣就:

      上面講的這些都是一般情況,也就是類(lèi)路徑都是在當(dāng)前目錄下,當(dāng)類(lèi)路徑不在當(dāng)前目錄下是否還能執(zhí)行呢?又該如果執(zhí)行呢?

      如下圖我把 Test.java 放到外面一層目錄,這時(shí)我們就需要自己設(shè)置 classpath 參數(shù)。例如:F:javaweb2班>java -cp?F:/javaweb2班/20160531 mypack1.java;或者在任意目錄下:java -cp?F:/javaweb2班/20160531 mypack1.java

      Java 中帶包(創(chuàng)建及引用)的類(lèi)的編譯與調(diào)試

      這樣就成功了!具體的執(zhí)行流程大家自己分析體會(huì)吧!

      總結(jié)一下

        1、Java 命令的參數(shù)是”類(lèi)的完整類(lèi)名”,而不是”文件名”。
      • 2、打包編譯時(shí),會(huì)自動(dòng)創(chuàng)建包目錄,不需要自己新建包名文件夾。
      • 3、當(dāng)當(dāng)前目錄有多個(gè) java 文件需要編譯或打包編譯時(shí),javac -d . *.java 指令可以給當(dāng)前目錄下的所有 java 文件根據(jù)程序中是否有包聲明進(jìn)行編譯或打包編譯。
      • 4、當(dāng)類(lèi)路徑不在當(dāng)前目錄下時(shí),需要用到 java -cp …,如:java -cp?F:/javaweb2班/20160531 mypack1.java。
      • 5、要清楚 java 虛擬機(jī)根據(jù)包聲明包導(dǎo)入執(zhí)行字節(jié)碼文件的流程。

      原文地址:https://www.cnblogs.com/xiaoming0601/p/5551113.html

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)