java源程序结构
JAVA培訓
一個完整的java源程序應該包括下列部分:
package語句; //該部分至多只有一句,必須放在源程序的第一句
import語句; /*該部分可以有若干import語句或者沒有,必須放在所有的
類定義之前*/
public classDefinition; //公共類定義部分,至多只有一個公共類的定義
//java語言規定該java源程序的文件名必須與該公共類名完全一致
classDefinition; //類定義部分,可以有0個或者多個類定義
interfaceDefinition; //接口定義部分,可以有0個或者多個接口定義
例如一個java源程序可以是如下結構,該源程序命名為HelloWorldApp.java:
package javawork.helloworld; /*把編譯生成的所有.class文件放到包
javawork.helloworld中*/
import java.awt.*; //告訴編譯器本程序中用到系統的AWT包
import javawork.newcentury; /*告訴編譯器本程序中用到用戶自定義
的包javawork.newcentury*/
public class HelloWorldApp{......} /*公共類HelloWorldApp的定義,
名字與文件名相同*/
class TheFirstClass{......} //第一個普通類TheFirstClass的定義
class TheSecondClass{......} //第二個普通類TheSecondClass的定義
...... //其它普通類的定義
interface TheFirstInterface{......} /*第一個接口
TheFirstInterface的定義*/
...... //其它接口定義
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"即可。
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文件。
java編程規范
軟件開發是一個集體協作的過程,程序員之間的代碼是經常要進行交換閱讀的,因此,java源程序有一些約定成俗的命名規定,主要目的是為了提高java程序的可讀性。
包名:包名是全小寫的名詞,中間可以由點分隔開,例如:java.awt.event;
類名:首字母大寫,通常由多個單詞合成一個類名,要求每個單詞的首字母也要大寫,例如class HelloWorldApp;
接口名:命名規則與類名相同,例如interface Collection;
方法名:往往由多個單詞合成,第一個單詞通常為動詞,首字母小寫,中間的每個單詞的首字母都要大寫,例如:balanceAccount, isButtonPressed;
變量名:全小寫,一般為名詞,例如:length;
常量名:基本數據類型的常量名為全大寫,如果是由多個單詞構成,可以用下劃線隔開,例如:int YEAR, int WEEK_OF_MONTH;如果是對象類型的常量,則是大小寫混合,由大寫字母把單詞隔開。
轉載于:https://www.cnblogs.com/JAVA-itjob/archive/2011/12/14/2287607.html
總結
- 上一篇: 劈开头的成语有哪些?
- 下一篇: android系统短信库的一些用法