第1個簡單java程式(轉)

ba發表於2007-08-15
第1個簡單java程式(轉)[@more@]既然Java 物件導向的基礎已經被討論過了,接下來讓我們看一些實際的Java 程式。讓我們從編譯及執行下面這個簡短示例程式開始。你將看到,這個程式的功能比你想像的要多。
/*
This is a simple Java program.
Call this file "Example.java".
*/
class Example {

// Your program begins with a call to main(). public static void main(String args[]) { System.out.println("This is a simple Java program.");}}

注意:在下面的介紹中,將使用標準JDK(Java Developer’s Kit,Java 開發工具包),它可從Sun Microsystems 公司得到。如果你正在使用其他的Java 開發環境,則Java 程式編譯、執行過程可能有所不同。在這種情況下,請你查閱編譯器的使用者手冊來獲得具體指導。
1 鍵入程式
對大多數計算機語言,包含程式原始碼的檔名是任意的,但對於Java 就不行。關於Java ,你需要知道的第一件事就是原始檔的名字非常重要。對這個例子,源程式檔名應該是Example.java 。下面我們將解釋其中的原因。
在Java 中,一個源程式檔案被稱為一個編譯單元(compilation unit )。它是一個包含一個或多個類定義的文字檔案。Java 編譯器要求源程式檔案使用.java 副檔名。請注意,副檔名長度是4個字元。所以,你的作業系統一定要有支援長檔名的能力。這意味著DOS 和Windows 3.1 是不支援Java 的(至少在目前是這樣)。當然,它可在Windows 95/98 和Windows NT/2000 下正常工作。
從上述示例程式中可以看出,程式中定義的類名也是Example 。這不是巧合。在Java 中,所有的程式碼都必須駐留在類中。按照約定,類名必須與源程式的檔名相同。你也應該確保檔名的大小寫字母與類名一樣,這是因為Java 是區分大小寫的。雖然檔名與類名必須一致的約定似乎有點專制,但是這個約定有助於你輕鬆地維護及組織程式。
2 編譯程式
要編譯示例程式Example ,須執行編譯器程式javac ,並在命令列上指定源程式檔名,格式如下所示:
C:>javac Example.java
編譯器javac 產生了一個名為Example.class 的檔案,該檔案包含程式的位元組碼。前面已討論過,Java 位元組碼中包含的是Java 解釋程式將要執行的指令碼。因此,javac 的輸出並不是可以直接執行的程式碼。
要真正執行該程式,你必須使用名叫java 的Java 直譯器。具體做法是把類名Example 作為一個命令列引數輸入,格式如下所示:
C:>java Example
執行這個程式,將輸出如下內容:

This is a simple Java program.

當Java 原始碼被編譯後,每個單獨的類都被放入自己的輸出檔案中,並以類的名字加“.class ”副檔名為其檔名。這就是為什麼Java 源程式檔案必須與其中包含的類同名的原因——源程式檔案將與“.class ”檔案相同。執行Java 直譯器實際上是指定你想要直譯器執行的類的名字,它會自動搜尋包含該名字且帶有.class 副檔名的檔案。如果找到,它將執行包含在該指定類中的程式碼。

2.2.3 詳細討論第1個示例程式
儘管Example.java 很短,但它包括了所有Java 程式具有的幾個關鍵特性。讓我們仔細分析該程式的每個部分。

程式開始於以下幾行:

/* This is a simple Java program.

Call this file "Example.java".

*/

這是一段註釋(comment )。像大多數其他的程式語言一樣,Java 也允許你在源程式檔案中加註釋。註釋中的內容將被編譯器忽略。事實上,註釋是為了給任何閱讀原始碼程式的人說明或解釋程式的操作。在本例中,註釋對程式進行說明,並提醒你該源程式的名字叫做Example.java 。當然,在真正的應用中,註釋通常用來解釋程式的某些部分如何工作或某部分的特殊功能。

Java 支援3種型別的註釋。在示例程式頂部的註釋稱為多行註釋(multiline comment )。這類註釋開始於“/*”,結束於“*/”。這兩個註釋符間的任何內容都將被編譯器忽略。正如“多行註釋”名字所示,一個多行註釋可以包含若干行文字。

程式的下一行程式碼如下所示:

class Example {

該行使用關鍵字class宣告瞭一個新類,Example 是類名識別符號,整個類定義(包括其所有成員)都將位於一對花括號({})之間,花括號在Java 中的使用方式與C或C++ 相同,目前,不必考慮類的細節,只是有一點要注意,在Java 中,所有程式活動都發生在類內,這就是為什麼Java 程式是物件導向的。

下面一行程式是單行註釋:

// Your program begins with a call to main().

這是Java 支援的第二種型別的註釋。單行註釋(single-line comment )始於“//”,在該行的末尾結束。通常情況下,程式設計師們對於較長的註釋使用多行註釋,而對於簡短的、一行一行的註釋則使用單行註釋。

下一行程式碼如下所示:

public static void main(String args[]) {

該行開始於main( ) 方法。正如它前面的註釋所說,這是程式將要開始執行的第一行。所有的Java 應用程式都透過呼叫main( ) 開始執行(這一點同C/C++ 一樣),我們在此還不能對該行的每一個部分作出精確的解釋,因為這需要詳細瞭解Java 封裝性的特點,但是,由於本書第1部分中的大多數例子都用到這一行程式碼,我們將對各部分作一個簡單介紹。

關鍵字public 是一個訪問說明符(access specifier),它允許程式設計師控制類成員的可見性。如果一個類成員前面有public ,則說明該成員能夠被宣告它的類之外的程式碼訪問(與public 相對的是private ,它禁止成員被所屬類之外的程式碼訪問)。在本例中,main( ) 必須被定義為public 型別,因為當程式開始執行時它需要被它的類之外的程式碼呼叫。關鍵字static 允許呼叫main( ) 而不必先實現該類的一個特殊例項。這是必要的,因為在任何物件被建立之前,Java 直譯器都會呼叫main() 。關鍵字void 僅通知編譯器main() 不返回任何值。你將看到,方法也可以有返回值。如果這一切似乎有一點令人費解,別擔心。所有這些概念都將在隨後的章節中詳細討論。

前面已經介紹過,main() 是Java 程式開始時呼叫的方法。請記住,Java 是區分大小寫的。因此,main 與Main是不同的。Java 編譯器也可以編譯不包含main() 方法的類,但是Java 解釋程式沒有辦法執行這些類。因此,如果你輸入了Main 而不是main ,編譯器仍將編譯你的程式,但Java 解釋程式將報告一個錯誤,因為它找不到main() 方法。
你要傳遞給方法的所有資訊由方法名後面括號中指定的變數接收,這些變數被稱為引數(parameters )。即使一個方法不需要引數,你仍然需要在方法名後面放置一對空括號。在main() 中,只有一個引數,即String args[] ,它宣告瞭一個叫做args的引數,該引數是String 類的一個例項陣列(注:陣列是簡單物件的集合)。字串型別的物件儲存字元的串。在本例中,args接收程式執行時顯示的任何命令列引數。本例中的這個程式並沒有使用這些資訊,但是本書後面講到的其他一些程式將使用它們。

該行的最後一個字元是“{”。它表示了main() 程式體的開始。一個方法中包含的所有程式碼都將包括在這對花括號中間。

另外,main( ) 僅是直譯器開始工作的地方。一個複雜的程式可能包含幾十個類,但這些類僅需要一個main( ) 方法以供直譯器開始工作。當你開始引用被嵌入在瀏覽器中的Java 小應用程式時,你根本不用使用main( ) 方法,因為Web瀏覽器使用另一種不同的方法啟動小應用程式。

接下來的程式碼行如下所示。請注意,它出現在main( ) 內。

System.out.println("This is a simple Java program.");

本行在螢幕上輸出字串“This is a simple Java program.”,輸出結果後面帶一個空行。輸出實際上是由內建方法println ( ) 來實現的。在本例中,println ( ) 顯示傳遞給它的字串。你將會看到,println ( ) 方法也能用來顯示其他型別的資訊。該行程式碼開始於System.out ,現在對它作詳細說明為時尚早,需涉及很多複雜內容。簡單的說,System 是一個預定義的可訪問系統的類,out是連線到控制檯的輸出流。

可能你已經猜到了,控制檯輸出(輸入)在實際的Java 程式和小應用程式中並不經常使用。因為絕大多數現代計算環境從本質上講都是視窗和圖形介面的,控制檯I/O 主要被用簡單的實用工具程式和演示程式使用。在本書後面,你將會學到用Java 生成輸出的其他方法。但是目前,我們將繼續使用控制檯I/O 方法。

請注意,println( ) 語句以一個分號結束。在Java 中,所有的語句都以一個分號結束。該程式的其他行沒有以分號結束,這是因為從技術上講,它們並不是程式語句。

程式中的第一個“}”號結束了main( ) ,而最後一個“}”號結束類Example 的定義。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-958065/,如需轉載,請註明出處,否則將追究法律責任。

相關文章