1-3.2 Java程式架構及行規
我們將直接使用範例程式Chap1_3_1.java,來探討Java式語言的架構。另外,在每一種程式語言都有其行規。行規指的是大部份程式設計師在編寫程式是所共同遵守的規範。程式不只是寫給自己看而已,當一支程式編寫完成後,有可能會因為各種不同的原因需要交接給其他人。此時,一種共同的編寫習慣和共識是必要的。
現在,我們在範例程式
Chap1_3_1.java
在圖的最上方為三種不同的註解格式。 程式設計師可以將註解加入程式中,用以增進程式的可讀性。註解可以幫助設計師身及所有使用這個程式的人閱讀及了解。在程式中加入適當的註解除了可以幫助閱讀理解程式之外。同時,設計者本身要永遠記得本身所編寫的程式也是非常困難的。所以,簡潔明了的敘述在註解中是很重要的。
當程式執行的時候,Java 會忽略註解。因此當執行程式時,Java會自動跳過註解的部分不會執行任何動作。通常會在每個程式的開頭加上註解,記錄目的、程式碼檔名、編號、版本及作者。
(1)傳統式註解(Tranditional comment)
又稱多行註解(Multiple-line comments)。
以 /* 開始 */ 結束。中間的文字部分即為註解。可跨越多行。
[重要]不要將 * 及 / 的順序寫錯,寫成 \ 又或是漏掉結束的 */。
(2)文件註解(Documentation comment)
又稱為雙星備註。
以 /** 開始 */ 結束。同(1)可跨越多行。透過 javadoc 可產生類似程式說明的網頁文件。
[重要]是以二個星號 /** 開始,不可少了一個。其它的如同(1)。
(3)單行註解(Single-line comment)
又稱為行尾註解(End of line comment)
以 // 開始的註解,直到該行的最後。通常放在程式碼一行的最後面,用來描述此行程式的目的。又可稱行尾註解。它不可跨越多行,所以適合較簡短的註解。
在開發程式時期。程式設計師會遇到 “這一行或是這幾行程式或許有錯誤。如果 ,刪除此行或是這幾行,執行結果會有何不同。但是,因此刪除程式碼,將會在之後可能須要復原時造成困擾。” 的情況。
此時,使用註解是一種方便的處理方式。
[重要]行規:在每個程式開始之處,都加上註解,說明程式的目的、作者、版本、時間、日
期。在程式碼之後加入單行註解助人助己。
類別宣告
上圖中顏色的部份為java程式中最主要的架構。我們可以了解,Java程式的基本格式如下圖。
原始碼的”類別名稱”須與原始碼的”檔案名稱”相同(大、小寫也須相同)。例如,檔案名稱為Aa.java 則類別名稱則必須為 Aa。如果不相同時(如類別名稱為aa), 則可以順利編譯,但是執行時會失敗。
類別名稱,是由一串字母、數字、底線(_)組成。而且,不能以數字開頭以及含有任何的空白。同時,在java的行規中,類別名稱第一個字母為大寫。
[重要]行規:類別名稱以及類別名稱內的所有單字的第一個字母都是大寫。例如: “class
Tester” 或 “class MyTester”。
[重要]Java 對於大小寫有區分的。所以”類別名稱”和”檔案名稱”必須完全一致,尤其注意
大小寫,依照行規編寫可避免此類形的錯誤。
[重要]研讀Java程式時,先尋找以大寫字母為開頭的部分。這些通常為Java類別的開始。
main方法
Java程式中可以包含多個方法(method),但是,在一支Java程式的類別中只能有一個 main 方法。同時,這也是每個Java程式的起始點。main 後面的括號部分 (String[] args) 為方法的組成部份。將這個部分視為固定格式,在之後的章節將會討論相關知識。
[重點]利用空行可以增加程式碼的可讀性。例如:圖1-中在main方法的上方增加一行空白
行。
[重要]括號必須成對出現。即當使用了左括號,不可忘了右括號。當輸入左括號時,可接
著輸入右括號,後在輸入中間的部分。可以避免此錯誤。
縮排
如同一篇散文的分段, 可以幫助讀者閱讀。在編寫程式時將程式以”段落區塊”的方式展現,同時可以幫助自己和其他人研讀。在段落中敘述式的右邊往左空幾個字元,即稱為縮排,可以使得程式的架構一目了然。
[重點]行規:縮排。如圖1-中,類別名稱(class Chap1_3_1)及main方法的開始(public
…..)的位置,以及main方法內的敘述式。全部往內縮一層。使用相同的縮排
量,前後使用一致。
方法的本體
依上圖,被main方法的大括號包起來縮排的部分,即為這個方法的本體。方法的本體由敘述式(Statement)組成。當程式執行時會由上往下依序執行每行敘述式。原則上,每行的結束必須使用分號(;)。依上圖及範例程式Chap1_3_1.java的執行結果,可以很明顯觀察出,(1)是先被執行,然後才是(2)。
[重要]原則上,在每行結尾,必須用分號(;)。
練習題1-1
修改範例程式Chap1_3_1.java,將第一行敘述(System.out.println("完成了!!"); )改成註解。
思考題
Err1_3_1
錯誤訊息
思考題
Err1_3_2
錯誤訊息
思考題
Err1_3_3
錯誤訊息
思考題
Err1_3_4
錯誤訊息
思考題
Err1_3_5
錯誤訊息
我們將直接使用範例程式Chap1_3_1.java,來探討Java式語言的架構。另外,在每一種程式語言都有其行規。行規指的是大部份程式設計師在編寫程式是所共同遵守的規範。程式不只是寫給自己看而已,當一支程式編寫完成後,有可能會因為各種不同的原因需要交接給其他人。此時,一種共同的編寫習慣和共識是必要的。
現在,我們在範例程式
Chap1_3_1.java
/* 這是我的第一支 JAVA程式 傳統式註解。多行註解 */ /** 這是我的第一支 JAVA程式 文件註解,雙星備註 */ //這是我的第一支 JAVA程式。 //單行註解。行尾註解 class Chap1_3_1 { public static void main(String[] args) { System.out.println("完成了!!"); //輸出至營幕顯示。 System.out.println("第 一支JAVA程式。"); //輸出至營幕顯示。 }} |
圖1-
註解(comment)在圖的最上方為三種不同的註解格式。 程式設計師可以將註解加入程式中,用以增進程式的可讀性。註解可以幫助設計師身及所有使用這個程式的人閱讀及了解。在程式中加入適當的註解除了可以幫助閱讀理解程式之外。同時,設計者本身要永遠記得本身所編寫的程式也是非常困難的。所以,簡潔明了的敘述在註解中是很重要的。
當程式執行的時候,Java 會忽略註解。因此當執行程式時,Java會自動跳過註解的部分不會執行任何動作。通常會在每個程式的開頭加上註解,記錄目的、程式碼檔名、編號、版本及作者。
(1)傳統式註解(Tranditional comment)
又稱多行註解(Multiple-line comments)。
/* 這是我的第一支 JAVA程式 傳統式註解。多行註解 */ |
以 /* 開始 */ 結束。中間的文字部分即為註解。可跨越多行。
[重要]不要將 * 及 / 的順序寫錯,寫成 \ 又或是漏掉結束的 */。
(2)文件註解(Documentation comment)
又稱為雙星備註。
/** 這是我的第一支 JAVA程式 文件註解 */ |
以 /** 開始 */ 結束。同(1)可跨越多行。透過 javadoc 可產生類似程式說明的網頁文件。
[重要]是以二個星號 /** 開始,不可少了一個。其它的如同(1)。
(3)單行註解(Single-line comment)
又稱為行尾註解(End of line comment)
//這是我的第一支 JAVA程式。 //單行註解。行尾註解 |
以 // 開始的註解,直到該行的最後。通常放在程式碼一行的最後面,用來描述此行程式的目的。又可稱行尾註解。它不可跨越多行,所以適合較簡短的註解。
在開發程式時期。程式設計師會遇到 “這一行或是這幾行程式或許有錯誤。如果 ,刪除此行或是這幾行,執行結果會有何不同。但是,因此刪除程式碼,將會在之後可能須要復原時造成困擾。” 的情況。
此時,使用註解是一種方便的處理方式。
[重要]行規:在每個程式開始之處,都加上註解,說明程式的目的、作者、版本、時間、日
期。在程式碼之後加入單行註解助人助己。
類別宣告
上圖中顏色的部份為java程式中最主要的架構。我們可以了解,Java程式的基本格式如下圖。
class 類別名稱 { main 方法… } |
圖1-
每個Java程式至少有一個類別,類別是由程式設計師加以定義。這些類別即為使用者定義類別(user-defined classes). 原始碼的”類別名稱”須與原始碼的”檔案名稱”相同(大、小寫也須相同)。例如,檔案名稱為Aa.java 則類別名稱則必須為 Aa。如果不相同時(如類別名稱為aa), 則可以順利編譯,但是執行時會失敗。
類別名稱,是由一串字母、數字、底線(_)組成。而且,不能以數字開頭以及含有任何的空白。同時,在java的行規中,類別名稱第一個字母為大寫。
[重要]行規:類別名稱以及類別名稱內的所有單字的第一個字母都是大寫。例如: “class
Tester” 或 “class MyTester”。
[重要]Java 對於大小寫有區分的。所以”類別名稱”和”檔案名稱”必須完全一致,尤其注意
大小寫,依照行規編寫可避免此類形的錯誤。
[重要]研讀Java程式時,先尋找以大寫字母為開頭的部分。這些通常為Java類別的開始。
main方法
public static void main(String[] args) { 方法的本體 } |
圖1-
上圖為main方法(main method)的宣告及撰寫方式。Java程式中可以包含多個方法(method),但是,在一支Java程式的類別中只能有一個 main 方法。同時,這也是每個Java程式的起始點。main 後面的括號部分 (String[] args) 為方法的組成部份。將這個部分視為固定格式,在之後的章節將會討論相關知識。
[重點]利用空行可以增加程式碼的可讀性。例如:圖1-中在main方法的上方增加一行空白
行。
[重要]括號必須成對出現。即當使用了左括號,不可忘了右括號。當輸入左括號時,可接
著輸入右括號,後在輸入中間的部分。可以避免此錯誤。
縮排
如同一篇散文的分段, 可以幫助讀者閱讀。在編寫程式時將程式以”段落區塊”的方式展現,同時可以幫助自己和其他人研讀。在段落中敘述式的右邊往左空幾個字元,即稱為縮排,可以使得程式的架構一目了然。
[重點]行規:縮排。如圖1-中,類別名稱(class Chap1_3_1)及main方法的開始(public
…..)的位置,以及main方法內的敘述式。全部往內縮一層。使用相同的縮排
量,前後使用一致。
方法的本體
public static void main(String[] args) { System.out.println("完成了!!"); //輸出至營幕顯示。-------(1) System.out.println("第 一支JAVA程式。"); //輸出至營幕顯示。--------(2) } |
依上圖,被main方法的大括號包起來縮排的部分,即為這個方法的本體。方法的本體由敘述式(Statement)組成。當程式執行時會由上往下依序執行每行敘述式。原則上,每行的結束必須使用分號(;)。依上圖及範例程式Chap1_3_1.java的執行結果,可以很明顯觀察出,(1)是先被執行,然後才是(2)。
[重要]原則上,在每行結尾,必須用分號(;)。
練習題1-1
修改範例程式Chap1_3_1.java,將第一行敘述(System.out.println("完成了!!"); )改成註解。
思考題
Err1_3_1
class Err1_3_1 { public static void main(String[] args){ /** 思考題是一般初學者常會犯的錯誤。 從思考題中可協助你,加深印象。 學習如何從錯誤訊息中尋找細索,是每個工程師應有的能力。 不要害怕或是抗拒錯誤訊息,它們是你的好朋友。 / } } |
錯誤訊息
D:\docs\chap1\err\Err1_3_1.java:3: unclosed comment /** ^ D:\docs\chap1\err\Err1_3_1.java:12: reached end of file while parsing} ^ 2 errors |
思考題
Err1_3_2
/** 不管錯誤訊息有多少行, 先只看最上面的第一行。 */ class err1_3_2{ public static void main(String[] args){ System.out.println("Hello! World!"); } } |
錯誤訊息
java.lang.NoClassDefFoundError: Err1_3_2 (wrong name: err1_3_2) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) Could not find the main class: Err1_3_2. Program will exit. Exception in thread "main" |
思考題
Err1_3_3
/** 不管錯誤訊息有多少行, 先只看最上面的第一行。 */ class Err1_3_3{ public static void main(String[] args){ System.out.println("Hello! World!") } } |
錯誤訊息
D:\docs\chap1\err\Err1_3_3.java:4: ';' expected System.out.println("Hello! World!") ^ 1 error |
思考題
Err1_3_4
/** 不管錯誤訊息有多少行, 先只看最上面的第一行。 */ class Err1_3_4{ public static void main(String{} args){ System.out.println("Hello! World!"); } } |
錯誤訊息
D:\docs\chap1\err\Err1_3_4.java:2: <identifier> expected public static void main(String{} args){ ^ D:\docs\chap1\err\Err1_3_4.java:2: ';' expected public static void main(String{} args){ ^ D:\docs\chap1\err\Err1_3_4.java:2: <identifier> expected public static void main(String{} args){ ^ D:\docs\chap1\err\Err1_3_4.java:4: ';' expected System.out.println("Hello! World!") ^ 4 errors |
思考題
Err1_3_5
/** 不管錯誤訊息有多少行, 先只看最上面的第一行。 */ class Err1_3_4{ public static void main(String[] args){ System.out.println("Hello! World!"); } |
錯誤訊息
D:\docs\chap1\err\Err1_3_5.java:10: reached end of file while parsing } ^ 1 error |
0 意見:
張貼留言