3.1. 第一個Java 程式

文章推薦指數: 80 %
投票人數:10人

先重新列出您的第一個Java 程式以方便說明。

範例3.1 HelloJava.java. public class HelloJava { public static void ... JavaSE6技術手冊 關於JavaSE6技術手冊 1. 瞭解Java 1.1. 什麼是Java 1.2. Java的特性 1.3. 如何學習Java 1.4. 接下來的主題 2. 入門準備 2.1. 下載、安裝、瞭解JDK 2.2. 設定Path與Classpath 2.3. 第一個Java程式 2.4. 選擇開發工具 2.5. 接下來的主題 3. 語法入門 3.1. 第一個Java程式 3.2. 在文字模式下與程式互動 3.3. 資料、運算 3.4. 流程控制 3.5. 接下來的主題 4. 從autoboxing、unboxing認識物件 4.1. 關於物件 4.2. 自動裝箱、拆箱 4.3. 接下來的主題 5. 陣列 5.1. 一維陣列、二維陣列 5.2. 進階陣列觀念 5.3. 接下來的主題 6. 字串 6.1. 認識字串 6.2. 字串進階運用 6.3. 接下來的主題 7. 封裝(Encapsulation) 7.1. 定義類別(Class) 7.2. 關於方法 7.3. 接下來的主題 8. 繼承(Inheritance)、多型(Polymorphism) 8.1. 繼承 8.2. 多型(Polymorphism) 8.3. 接下來的主題 9. 管理類別檔案 9.1. 內部類別 9.2. package與import 9.3. 接下來的主題 10. 例外處理(ExceptionHandling) 10.1. 例外處理入門 10.2. 受檢例外(CheckedException)、執行時期例外(RuntimeException) 10.3. throw、throws 10.4. 例外的繼承架構 10.5. 斷言(Assertion) 10.6. 接下來的主題 11. 列舉型態(EnumeratedTypes) 11.1. 常數設置與列舉型態 11.2. 定義列舉型態 11.3. 接下來的主題 12. 泛型 12.1. 泛型入門 12.2. 泛型進階語法 12.3. 接下來的主題 PoweredbyGitBook A A 襯線體 無襯線體 白色 棕褐色 夜間 分享到Twitter 分享到Google 分享到Facebook 分享到Weibo 分享到Instapaper JavaSE6技術手冊 3.1第一個Java程式 先來解釋一下第2章中您所完成的「第一個Java程式」,如果您學過C語言,對於3.1.2「給C使用者的第一個Java程式」可能會覺得比較親切,因為介紹了類似C語言中printf()函式的功能,另外別忘了在寫程式時加入一些註解文字,這在閱讀程式碼的時候會很有幫助。

3.1.1解釋第一個Java程式 要對新手解釋第一個Java程式事實上並不簡單,因為一個最簡單的Java程式就會涉及檔案管理、類別(Class)、主程式、命令列引數(Commandlineargument)等觀念,我很想對您說,反正一個基本的Java程式就這麼寫就對了,因為要一下子接受這麼多觀念並不容易。

總之,如果現階段您無法瞭解,就請當它是Java語言的文法規範。

先重新列出您的第一個Java程式以方便說明。

範例3.1HelloJava.java publicclassHelloJava{ publicstaticvoidmain(String[]args){ System.out.println("嗨!我的第一個Java程式!"); } } 定義類別(Class) 撰寫Java程式通常都是由定義「類別」開始,"class"是Java用來定義類別的關鍵字,範例中類別的名稱是HelloJava,這與您編輯的檔案(HelloJava.java)主檔名必須相同,HelloJava類別使用關鍵字"public"宣告,在編寫Java程式時,一個檔案中可撰寫數個類別,但是只能有一個公開(public)類別,而且檔案主檔名必須與這個公開類別的名稱相同,在定義類別名稱時,建議將類別首字母大寫,並在類別名稱上表明類別的作用。

定義區塊(Block) 在Java程式使用大括號'{'與'}'來定義區塊,大括號兩兩成對,目的在區別定義的作用範圍,例如您的程式中,HelloJava類別的區塊包括了main(),而main()的區塊包括了一句顯示訊息的程式碼。

定義main()方法(Method) main()是Java程式的「進入點」(Entrypoint),程式的執行是由進入點開始的,類別中的方法是類別的成員(Member),main()方法一定是個"public"成員(member),這樣它才可以執行環境被呼叫;main()方法不需要產生物件(Object)就能被執行,所以它必須是個"static"成員,"public"與"static"的觀念都是Java物件導向(Object-oriented)程式上的觀念,之後專門討論類別與物件時會再介紹,這邊先不用理解"public"與"static"的真正意涵。

main()之前的「void」表示main()執行結束後不傳回任何值,Java程式的main()方法不需傳回任何值,所以一律宣告void;main()括號間的String[]args可以在執行程式時取得使用者指定的命令列引數(Commandlineargument),目前雖然您用不到,但仍要撰寫它,這是規定。

撰寫陳述(Statement) 來看main()當中的一行陳述: System.out.println("嗨!我的第一個Java程式!"); 陳述是程式語言中的一行指令,簡單的話就是程式語言的「一句話」。

注意每一句陳述的結束要用分號';',在上面的陳述中,您使用了java.lang套件(package)下的System類別的公開(public)成員out物件,out是一個PrintStream物件,您使用了PrintStream所提供的println()方法,將當中指定的字串(String)"嗨!我的第一個Java程式!"輸出至文字模式上。

注意在Java中字串要使用""包括,println()表示輸出字串後自動換行,如果使用print()的話,則輸出字串後程式並不會自動斷行。

一個最基本的Java程式完成了,接下來要編譯程式了,關於編譯在第2章中有介紹過,這邊再作個提示,編譯時是使用javac公用程式,如下所示: javacHelloJava.java 編譯完成後,預設在同一個目錄下會產生一個HelloJava.class的位元碼(bytecodes)檔案,在執行時期可以由執行環境轉換為平台可執行的機器碼,執行程式時是使用java工具程式,如下所示: javaHelloJava 注意最後並沒有加上*.class的副檔名,您只要提供類別名稱就可以了,程式畫面會顯示如下: 嗨!我的第一個Java程式! 良葛格的話匣子定義區塊的風格因人而異,有的設計人員習慣先換行再定義區塊,例如: publicclassHelloJava { publicstaticvoidmain(String[]args) { System.out.println("嗨!我的第一個Java程式!"); } } 這麼作的好處是可以很快的找到兩兩成對的大話號,區塊對應清楚。

找一個您喜歡的風格撰寫,以清晰易讀為原則就可以了。

3.1.2給C使用者的第一個Java程式 學過C語言的設計人員總是對printf()方法的功能總是難以忘懷,他們在學Java語言時常不免感概:「是的!是printf(),他們忘了把printf()放進去了....」。

在某些時候,printf()方法中字串上可以指定引數來進行輸出的功能確實令人難以割捨,幸好,Java在J2SE5.0這個版本中,總算給了C使用者類似printf()的功能了,如果您是學過C的使用者,下面這第一個Java程式或許會讓您高興一些: 範例3.2HelloJavaForC.java publicclassHelloJavaForC{ publicstaticvoidmain(String[]args){ System.out.printf("%s!這是您的第一個Java程式!\n", "C語言Fan"); } } 這次使用的是out物件的printf()方法,'%s'對應於第一個字串"C語言Fan",程式的輸出會是如下: C語言Fan!這是您的第一個Java程式! '\n'對C程式設計人員並不陌生,它是換行字元,您也可以如下使用println()進行換行。

範例3.3SecondJavaForC.java publicclassSecondJavaForC{ publicstaticvoidmain(String[]args){ System.out.printf("%s!這是您的第二個Java程式!", "C語言Fan").println(); } } 程式的輸出會是如下: C語言Fan!這是您的第二個Java程式! 在printf()要指定數字對應的話,可以使用'%d',例如: 範例3.4ThirdJavaForC.java publicclassThirdJavaForC{ publicstaticvoidmain(String[]args){ System.out.printf("%s!這是您的第%d個Java程式!\n", "C語言Fan",3); } } '%s'對應至"C語言Fan",而'%d'對應至數字3,所以程式的輸出會是如下: C語言Fan!這是您的第3個Java程式! 這邊再作一次提醒,printf()方法是在J2SE5.0之後才有的功能,1.4或更早版本的JDK並沒有辦法編譯範例3.2、3.3與3.4。

良葛格的話匣子如果您安裝的是JDK6,即使您沒有使用到JDK6的新功能,所編譯出來的class檔預設也是無法在更早版本的JRE上運行的,因為JDK6編譯出來的class檔版號跟較早版本的JVM所接受的版號並不相同。

在不使用JDK6的新功能下,如果您希望編譯出來的class可以在1.5版本或之前版本上的環境上運行,則編譯時必須指定-source與-target引數,-source指定原始碼中可以使用的版本功能,-target指定編譯出來的位元碼適用的虛擬機器版本,例如您想要編譯出來的檔案在1.5版本環境上運行的話,可以如下編譯程式: javac-source1.5-target1.5HelloJava.java 3.1.3為程式加入註解 在撰寫程式的同時,您可以為程式碼加上一些註解(Comment),說明或記錄您的程式中一些要注意的事項,Java語言是您用來與電腦溝通的語言,而註解的作用則是與開發人員溝通。

原始碼檔案中被標註為註解的文字,編譯器不會去處理它,所以註解文字中撰寫任何的東西,對編譯出來的程式不會有任何影響。

在Java中可以用兩種方式為程式加上註解,以範例3.4為例,您可以為它加上一些註解文字,例如: /*作者:良葛格 *功能:示範printf()方法 *日期:2005/4/30 */ publicclassThirdJavaForC{ publicstaticvoidmain(String[]args){ //printf()是J2SE5.0的新功能,必須安裝JDK5.0才能編譯 System.out.printf("%s!這是您的第%d個Java程式!\n", "C語言Fan",3); } } '/'與'/'用來包括跨行的註解文字,通常開發人員為了讓註解文字看來比較整齊清晰,中間還會使用一些''來排版,只要記得使用多行註解時,是以'/'開始註解文字,以'*/'結束註解文字,所以您不能用巢狀方式來撰寫多行註解,例如下面的方式是不對的: /*註解文字1……bla…bla /* 註解文字2……bla…bla */ */ 編譯器在處理前面的撰寫方式時,會以為倒數第二個'/'就是註解結束的時候,因而對最後一個'/'就會認為是錯誤的符號,這時就會出現編譯錯誤的訊息。

'//'則可以用來撰寫單行註解,在'//'之後的該行文字都被視為註解文字,多行註解可以包括單行註解,例如: /*註解文字1……bla…bla //註解文字2……bla…bla */ 註解的撰寫時機與內容並沒什麼特別的規定,以清晰易懂為主,註解的目的在於說明程式,是給開發人員看的,您可以使用註解在程式中寫下重要事項,日後作為備忘或是方便其他開發人員瞭解您的程式內容。

註解的另一個作用則是用來暫時註銷某些陳述句,當您覺得程式中某些陳述有問題,可以使用註解標示起來,如此編譯器就不會去處理,例如同樣以範例3.4為例: publicclassThirdJavaForC{ publicstaticvoidmain(String[]args){ //System.out.println("C語言Fan!這是您的第3個Java程式!"); System.out.printf("%s!這是您的第%d個Java程式!\n", "C語言Fan",3); } } 在'//'之後的內容被視為註解文字,編譯器不會去處理,所以執行時不會執行該行陳述,如果日後要重新恢復那些陳述句的功能,只要將註解符號消去就可以了。

#第一個Java程式



請為這篇文章評分?