| 過程式 (C) | 物件導向 (Java) |
|---|---|
| 先定義功能,再分解步驟為過程/函數 | 先識別實體,再定義實體行為與訊息互動 |
| 代碼組織為過程/函數,重用靠函數庫 | 屬性與行為封裝於物件,重用靠繼承/多型 |
| 程式規模增大時除錯維護困難 | 模型貼近真實世界,擴充性與維護性佳 |
| 核心限制:與現實世界模型不一致 | 核心優勢:實體屬性與行為渾然一體 |
語法相同:if (boolean) stmt1 else stmt2
關鍵差異:Java 條件表達式必須為 boolean 型別,不可像 C 直接使用數值。需以關係表達式替代。
// C 風格(Java 不合法)
if (ch == -1) ...
// Java 正確寫法
if (ch == -1) ... // 若 ch 為 int 合法
// 或
if ((ch = System.in.read()) != -1) ...
| 語句 | Java 語法 | 與 C 差異 |
|---|---|---|
| while | while(boolean) { stmts; } | 條件必為 boolean |
| do-while | do { stmts; } while(boolean); | 條件必為 boolean |
| for | for(expr1; expr2; expr3) { stmts; } | 功能最強,結構同 C,條件必為 boolean |
C 的條件表達式可為任意整數,Java 強制 boolean,提高型別安全。
結構完全相同:switch(expr) { case 常量: ... break; default: ... }
break、continue、return 用法相同label: for(...) { break label; continue label; }// 標籤跳轉範例
OutLabel:
for (int i = 0; i < 10; i++) {
char ch = (char) System.in.read();
switch (ch) {
case 'a': break OutLabel; // 跳出雙層迴圈
case 'b': System.out.println("b"); break;
case 'c': continue; // 繼續下一輪
default: return; // 直接返回
}
}
Java 流程控制與 C 表面高度相似,但布林條件強制、無 goto、標籤跳轉等細節體現了更嚴謹的型別安全與結構化設計哲學。隨著學習深入,開發者將體會到物件導向思維帶來的架構優勢。