亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

再議package包的問題

2019-11-18 13:20:17
字體:
來源:轉載
供稿:網友

   通常package包會把很多人搞糊涂,于是我翻閱資料發現“java編程思想”中有比較詳盡
  的解釋于是與大家分享,希望能祝你一臂之力。
  
  package解析自己為機器上的一個目錄。這樣一來,Java程序運行并需要裝載.class文件的時候,它就可以找到.class文件駐留的那個目錄。
  Java解釋器的工作程序如下:首先,它找到環境變量CLASSPATH(將Java或者具有Java解釋能力的工具——如瀏覽器——安裝到機器中時,通過操作系統進行設定)。CLASSPATH包含了一個或多個目錄,它們作為一種非凡的“根”使用,從這里展開對.class文件的搜索。從那個根開始,解釋器會尋找包名,并將每個點號(句點)替換成一個斜杠,從而生成從CLASSPATH根開始的一個路徑名(所以package foo.bar.baz會變成foo/bar/baz或者foo/bar/baz;具體是正斜杠還是反斜杠由操作系統決定)。隨后將它們連接到一起,成為CLASSPATH內的各個條目(入口)。以后搜索.class文件時,就可從這些地方開始查找與預備創建的類名對應的名字。此外,它也會搜索一些標準目錄——這些目錄與Java解釋器駐留的地方有關。
  為進一步理解這個問題,下面以我自己的域名為例,它是brUCeeckel.com。將其反轉過來后,com.bruceeckel就為我的類創建了獨一無二的全局名稱(com,edu,org,net等擴展名以前在Java包中都是大寫的,但自Java 1.2以來,這種情況已發生了變化。現在整個包名都是小寫的)。由于決定創建一個名為util的庫,我可以進一步地分割它,所以最后得到的包名如下:
  package com.bruceeckel.util;
  現在,可將這個包名作為下述兩個文件的“命名空間”使用:
  
  //: Vector.java
  // Creating a package
  package com.bruceeckel.util;
  
  public class Vector {
   public Vector() {
    System.out.PRintln(
     "com.bruceeckel.util.Vector");
   }
  } ///:~
  
  創建自己的包時,要求package語句必須是文件中的第一個“非注釋”代碼。第二個文件表面看起來是類似的:
  
  //: List.java
  // Creating a package
  package com.bruceeckel.util;
  
  public class List {
   public List() {
    System.out.println(
     "com.bruceeckel.util.List");
   }
  } ///:~
  
  這兩個文件都置于我自己系統的一個子目錄中:
  C:/DOC/JavaT/com/bruceeckel/util
  若通過它往回走,就會發現包名com.bruceeckel.util,但路徑的第一部分又是什么呢?這是由CLASSPATH環境變量決定的。在我的機器上,它是:
  CLASSPATH=.;D:/JAVA/LIB;C:/DOC/JavaT
  可以看出,CLASSPATH里能包含大量備用的搜索路徑。然而,使用JAR文件時要注重一個問題:必須將JAR文件的名字置于類路徑里,而不僅僅是它所在的路徑。所以對一個名為grape.jar的JAR文件來說,我們的類路徑需要包括:
  CLASSPATH=.;D:/JAVA/LIB;C:/flavors/grape.jar
  正確設置好類路徑后,可將下面這個文件置于任何目錄里(若在執行該程序時碰到麻煩,請參見第3章的3.1.2小節“賦值”):
  
  //: LiBTest.java
  // Uses the library
  package c05;
  import com.bruceeckel.util.*;
  
  public class LibTest {
   public static void main(String[] args) {
    Vector v = new Vector();
    List l = new List();
   }
  } ///:~
  
  編譯器碰到import語句后,它會搜索由CLASSPATH指定的目錄,查找子目錄com/bruceeckel/util,然后查找名稱適當的已編譯文件(對于Vector是Vector.class,對于List則是List.class)。注重Vector和List內無論類還是需要的方法都必須設為public。
  戀灳
  1. 自動編譯
  為導入的類首次創建一個對象時(或者訪問一個類的static成員時),編譯器會在適當的目錄里尋找同名的.class文件(所以假如創建類X的一個對象,就應該是X.class)。若只發現X.class,它就是必須使用的那一個類。然而,假如它在相同的目錄中還發現了一個X.java,編譯器就會比較兩個文件的日期標記。假如X.java比X.class新,就會自動編譯X.java,生成一個最新的X.class。
  對于一個特定的類,或在與它同名的.java文件中沒有找到它,就會對那個類采取上述的處理。
  
  2. 沖突
  若通過*導入了兩個庫,而且它們包括相同的名字,這時會出現什么情況呢?例如,假定一個程序使用了下述導入語句:
  import com.bruceeckel.util.*;
  import java.util.*;
  由于java.util.*也包含了一個Vector類,所以這會造成潛在的沖突。然而,只要沖突并不真的發生,那么就不會產生任何問題——這當然是最理想的情況,因為否則的話,就需要進行大量編程工作,防范那些可能可能永遠也不會發生的沖突。
  如現在試著生成一個Vector,就肯定會發生沖突。如下所示:
  Vector v = new Vector();
  它引用的到底是哪個Vector類呢?編譯器對這個問題沒有答案,讀者也不可能知道。所以編譯器會報告一個錯誤,強迫我們進行明確的說明。例如,假設我想使用標準的Java Vector,那么必須象下面這樣編程:
  java.util.Vector v = new java.util.Vector();
  由于它(與CLASSPATH一起)完整指定了那個Vector的位置,所以不再需要import java.util.*語句,除非還想使用來自java.util的其他東西。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕欧美专区| 97视频国产在线| 91九色视频在线| 国语自产精品视频在线看| 日韩视频精品在线| 最新亚洲国产精品| 成人乱人伦精品视频在线观看| 最好看的2019的中文字幕视频| 久久久久久久久久久91| 欧美日韩国产精品一区| 久久中文久久字幕| 亚洲在线第一页| 成人av资源在线播放| 欧美激情乱人伦一区| 精品中文字幕在线2019| 都市激情亚洲色图| 91爱爱小视频k| 欧美亚洲另类视频| 亚洲最大av网站| 国产精品久久久久久久久久久新郎| 亚洲国产精品视频在线观看| 日韩欧美精品网址| 欧美性猛交xxxx免费看漫画| 北条麻妃一区二区三区中文字幕| 国产精品盗摄久久久| 日韩精品中文字| 日韩电影中文 亚洲精品乱码| 国外成人在线播放| 国产精品九九九| 国产精品电影久久久久电影网| 亚洲国产91精品在线观看| 国产精品美女免费| 日韩在线欧美在线国产在线| 久久99精品视频一区97| 成人黄色大片在线免费观看| 亚洲一二三在线| 成人免费淫片aa视频免费| 啪一啪鲁一鲁2019在线视频| 欧美最猛性xxxx| 色综合久久天天综线观看| 91色在线视频| 成人在线视频福利| 亚洲一区二区三区视频播放| 亚洲精品第一页| 亚州精品天堂中文字幕| 国产91露脸中文字幕在线| 亚洲欧美日韩国产中文专区| 欧美日韩国产综合新一区| 日韩成人中文电影| 亚洲直播在线一区| 2018国产精品视频| 38少妇精品导航| 欧美高清不卡在线| 久久在线视频在线| 日韩精品免费一线在线观看| 欧美精品精品精品精品免费| 亚洲欧洲一区二区三区在线观看| 国产精品www色诱视频| 国产综合在线视频| 成人性生交xxxxx网站| 久久精品青青大伊人av| 欧美成人午夜视频| 91av在线免费观看视频| 亚洲区中文字幕| 亚洲欧美日韩久久久久久| 精品国产一区二区在线| 亚洲人成网站777色婷婷| 青青久久av北条麻妃海外网| 欧美日韩国产丝袜美女| 欧美一区二区影院| 亚洲精品视频在线观看视频| 亚洲国内精品在线| 欧美精品18videos性欧美| 欧美综合第一页| 国产日韩欧美影视| 美女久久久久久久| 国产日本欧美一区二区三区| 亚洲国产精品推荐| 亚洲欧洲日产国产网站| 亚洲伊人成综合成人网| 日韩精品欧美国产精品忘忧草| 亚洲第一福利网| 中文字幕自拍vr一区二区三区| 久久精品视频99| 亚洲精品不卡在线| 91青草视频久久| 亚洲新声在线观看| 亚洲精品电影网| 91久久久久久久| 国语自产精品视频在线看| 亚洲伊人成综合成人网| 日韩免费观看网站| 成人妇女免费播放久久久| 亚洲肉体裸体xxxx137| 欧美男插女视频| 成人做爽爽免费视频| 欧美精品一区在线播放| 欧美电影《睫毛膏》| 狠狠综合久久av一区二区小说| 日韩成人av在线| 在线日韩中文字幕| 成人激情电影一区二区| 亚洲最大的成人网| 在线激情影院一区| 另类色图亚洲色图| 国产精品成人av性教育| 国产精品视频久久| 国产精选久久久久久| 一个人看的www欧美| 日韩av免费网站| 日韩在线观看免费全集电视剧网站| 97人人模人人爽人人喊中文字| 欧美激情综合亚洲一二区| 92看片淫黄大片欧美看国产片| 亚洲精品二三区| 九九热这里只有精品6| 国产精品草莓在线免费观看| 26uuu另类亚洲欧美日本一| 亚洲日本欧美日韩高观看| 久久这里有精品| 国产精品久久久久影院日本| 91欧美视频网站| 91人人爽人人爽人人精88v| 欧美日韩在线第一页| 亚洲一区二区在线播放| 久久综合伊人77777蜜臀| 国产69久久精品成人看| 色黄久久久久久| 欧美激情综合亚洲一二区| 91精品久久久久久久久久久| 97免费中文视频在线观看| 国产情人节一区| 精品久久久999| 欧美日韩另类在线| 国产亚洲欧美日韩一区二区| 国内精品中文字幕| 亚洲电影免费在线观看| 久久久久久久久久国产精品| 97国产精品人人爽人人做| 久久久久久久久久久久久久久久久久av| 日韩成人在线观看| 久久九九亚洲综合| 2019最新中文字幕| 国产美女直播视频一区| 日韩中文字幕免费视频| 日本sm极度另类视频| 久久精品国产99国产精品澳门| 国产成人久久精品| 91亚洲精品久久久久久久久久久久| 555www成人网| 久久久久久国产精品三级玉女聊斋| 亚洲国产日韩一区| 欧美最顶级的aⅴ艳星| 亚洲精品视频中文字幕| 久久久久久久久久久网站| 欧美成人第一页| 欧美激情久久久| 国产高清视频一区三区| 久久激情五月丁香伊人| 日韩免费观看视频| 欧美亚洲成人xxx| 亚洲国产精品国自产拍av秋霞| 亚洲黄色片网站| 亚洲精品suv精品一区二区|