java的import、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"即可。
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這個類,最後就找到了。如果要從一個包中引入多個類則在包名後加上".*"表示。
如果程序中用到了用戶自己定義的包中的類,假如在上面程序中要用到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文件。