java的import、package、文件命名規則

java的import、package、文件命名規則

 package語句:由於java編譯器爲每個類生成一個字節碼文件,且文件名與類名相同,因此同名的類有可能發生衝突。爲了解決這一問題,java提供包來管理類名空間,包實際提供了一種命名機制和可見性限制機制。而在java的系統類庫中,把功能相似的類放到一個包(package)中,例如所有的圖形界面的類都放在 java.awt這個包中,與網絡功能有關的類都放到java.net這個包中。用戶自己編寫的類(指.class文件)也應該按照功能放在由程序員自己命名的相應的包中,例如上例中的javawork.helloworld就是一個包。包在實際的實現過程中是與文件系統相對應的,例如 javawork.helloworld所對應的目錄是path/javawork/helloworld,而path是在編譯該源程序時指定的。比如在命令行中編譯上述HelloWorldApp.java文件時,可以在命令行中敲入"javac -d f:/javaproject HelloWorldApp.java",則編譯生成的HelloWorldApp.class文件將放在目錄f:/javaproject/ javawork/helloworld/目錄下面,此時f:/javaprojcet相當於path。但是如果在編譯時不指定path,則生成的. class文件將放在編譯時命令行所在的當前目錄下面。比如在命令行目錄f:/javaproject下敲入編譯命令"javac HelloWorldApp.java",則生成的HelloWorldApp.class文件將放在目錄f:/javaproject下面,此時的 package語句相當於沒起作用。
 但是,如果程序中包含了package語句,則在運行時就必須包含包名。例如, HelloWorldApp.java程序的第一行語句是:package p1.p2;編譯的時候在命令行下輸入"javac -d path HelloWorldApp.java",則HelloWorldApp.class將放在目錄path/p1/p2的下面,這時候運行該程序時有兩種方式:
  第一種:在命令行下的path目錄下輸入字符"java p1.p2.HelloWorldApp"。
      第二種:在環境變量classpath中加入目錄path,則運行時在任何目錄下輸入"java p1.p2.HelloWorldApp"即可。51Testing軟件測試網 t*_&Nwl{3X

  import語句:如果在源程序中用到了除java.lang這個包以外的類,無論是系統的類還是自己定義的包中的類,都必須用import語句標識,以通知編譯器在編譯時找到相應的類文件。例如上例中的java.awt是系統的包,而javawork.newcentury是用戶自定義的包。比如程序中用到了類 Button,而Button是屬於包java.awt的,在編譯時編譯器將從目錄classpath/java/awt中去尋找類Button, classpath是事先設定的環境變量,比如可以設爲:classpath=.;d:/jdk1.3/lib/。 classpath也可以稱爲類路徑,需要提醒大家注意的是,在classpath中往往包含多個路徑,用分號隔開。例如classpath=.;d:/ jdk1.3/lib/中的第一個分號之前的路徑是一個點,表示當前目錄,分號後面的路徑是d:/jdk1.3/lib/,表示系統的標準類庫目錄。在編譯過程中尋找類時,先從環境變量classpath的第一個目錄開始往下找,比如先從當前目錄往下找java.awt中的類Button時,編譯器找不着,然後從環境變量classpath的第二個目錄開始往下找,就是從系統的標準類庫目錄d:/jdk1.3/lib開始往下找java.awt的 Button這個類,最後就找到了。如果要從一個包中引入多個類則在包名後加上".*"表示。51Testing軟件測試網$r;T&u'C`ok o Z

  如果程序中用到了用戶自己定義的包中的類,假如在上面程序中要用到javawork.newcentury包中的類HelloWorldApp,而包javawork.newcentury所對應的目錄是f:/javaproject/javawork/newcentury,classpath仍舊是classpath=.;d:/ jdk1.3/lib/,則編譯器在編譯時將首先從當前目錄尋找包javawork.newcentury,結果是沒有找到;然後又從環境變量 classpath的第二個目錄d:/jdk1.3/lib/開始往下找,但是仍然沒有找到。原因在於包javawork.newcentury是放在目錄f:/javaproject下面。因此,需要重新設定環境變量classpath,設爲classpath=.;d:/jdk1.3/lib/;f: /javaproject/ 。所以編譯器從f:/javaproject開始找包javawork.newcentury就可以找到。

  源文件的命名規則:如果在源程序中包含有公共類的定義,則該源文件名必須與該公共類的名字完全一致,字母的大小寫都必須一樣。這是java語言的一個嚴格的規定,如果不遵守,在編譯時就會出錯。因此,在一個java源程序中至多只能有一個公共類的定義。如果源程序中不包含公共類的定義,則該文件名可以任意取名。如果在一個源程序中有多個類定義,則在編譯時將爲每個類生成一個.class文件。
發佈了9 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章