C與Java在流程控制上的異同 (轉)
C與在流程控制上的異同
山東煤炭教育學院 胡振山 郭施毅
過 程 式 編 程( 代 表 語 言C) 首 先 必 須 定 義 所 要 實 現 的 功 能, 然 後 設 計 為 實 現 這 些 功 能 所 必 須 的 步 驟。 此 步 驟 也 就 是 過 程。 編 寫 代 碼 實 際 上 等 同 於 分 解 這 些 步 驟, 使 每 一 步 直 接 對 應 一 行 代 碼。 為 實 現 有 限 度 的 重 用, 代 碼 被 組 織 到 過 程 或 函 數 中。 每 當 發 現 一 段 反 復 使 用 的 代 碼 時, 你 都 可 以 把 他 組 織 到 一 個 過 程 或 函 數。 這 種 方 式 對 於 有 些 問 題 是 合 適 的, 問 題 是 如 果 程 序 達 到 一 定 程 度, 程 序 的 調 試 和 維 護 就 會 變 得 很 困 難, 這 時 過 程 式 編 程( 語 言) 就 不 合 適 了。 於 是 面 向 對 象 的 編 程 方 法 及 面 向 對 象 語 言( 代 表Java) 已 成 為 編 程 的 主 流。 過 程 式 編 程 存 在 的 局 限 性, 其 根 本 原 因 就 是 在 於 他 與 現 實 世 界 模 型 之 間 的 不 一 致。 現 實 世 界 的 模 型 中, 實 體 是 基 本 的 組 成 單 元, 實 體 具 有 屬 性 和 行 為, 這 兩 者 是 渾 然 一 體 的。 與 過 程 式 編 程 語 言 相 反, 面 向 對 象 的 語 言 則 考 慮 了 這 兩 者 的 之 間 的 一 致。 面 向 對 象 編 程 首 先 考 慮 是 需 要 那 些 實 體, 這 些 實 體 具 有 何 種 行 為。 實 體 就 是 對 象, 行 為 是 基 於 某 些 消 息 所 做 出 的 反 映。
流 程 控 制 對 於 任 何 一 門 編 程 語 言 來 說 都 是 至 關 重 要 的, 他 提 供 了 控 制 程 序 步 驟 的 基 本 手 段, 是 程 序 的 核 心 部 分, 可 以 說, 缺 少 了 控 制 流, 就 不 會 有 程 序 設 計 語 言, 因 為 現 在 沒 有 哪 一 種 程 序 只 是 線 性 地 執 行 語 句 序 列。 程 序 中 需 要 與 用 戶 相 互 交 流, 需 要 根 據 用 戶 的 輸 入 決 定 執 行 序 列, 需 要 有 循 環 執 行 等 等, 這 些 都 少 不 了 流 程 控 制。
Java 的 流 程 控 制 有: 條 件 語 句IF; 循 環 語 句while,do while ,for; 開 關 語 句switch,case,break; 轉 移 語 句break,continue,label; 返 回 語 句return 以 及 復 合 語 句。 也 許 你 會 認 為 這 些 語 句 與C 一 樣, 沒 有 什 麼 區 別。 是 的, 語 句 一 樣 但 還 是 存 在 區 別 的, 接 下 來 我 們 看 區 別 何 在。
條 件 語 句if - else
條 件 語 句 是 程 序 設 計 語 言 中 最 基 本 的 流 程 控 制 語 句, 幾 乎 任 何 一 門 程 序 設 計 語 言 的 條 件 語 句 都 用 到 了IF 關 鍵 字, 因 而 條 件 語 句 也 被 稱 為IF 語 句。 條 件 語 句 分 簡 單 語 句 和 復 合 語 句, 如 果 條 件 語 句 得 分 支 中 又 包 括 了 條 件 語 句, 即 稱 為 復 合 條 件 語 句, 或 嵌 套 條 件 語 句; 否 則 稱 為 簡 單 語 句。
用 法:if (boolean) statement1 else statement2
不 同:Java 分 支 語 句 中 條 件 表 達 式 必 須 是 布 爾 型, 不 能 是 數 值 型。 這 裡 不 能 像C 那 樣 直 接 放 上 數 值 數 據, 而 應 該 用 關 系 表 達 式 代 替。
Class sample1
{
public static void main(String args[])
{
char Ch;
System.Out.println("Please enter a number 1-3:");
Ch=(char)System.in.read();
if(Ch==-1)
System.out.println("nNo character entered.");
else if (Ch=='1')
System.out.println("nYou have entered a 1.");
else if(Ch=='2')
System.out.println("nYou have entered a 2.");
else if(Ch=='3')
System.out.println("nYou have entered a 3.");
else System.out.println
("nYou have entered a wrong number.");
}
}
循 環 語 句 在 執 行 過 程 中 某 一 段 代 碼 重 復 執 行.Java 也 提 供 了 三 種 不 同 的 循 環 語 句.
循 環 語 句while while 語 句 的 功 能 是 當 條 件 成 立 時, 重 復 執 行 子 語 句, 重 復 執 行 的 次 數 取 決 於 子 語 句 的 執 行 情 況.while 語 句 的 用 法;
while(boolean_expression)
{
statements;
}
循 環 語 句do
如 果 需 要 循 環 執 行 的 語 句 至 少 要 執 行 一 次, 可 使 用do---while 語 句.do---while 語 句 是while 語 句 的 一 個 變 種. 用 法 是:
do
{
statements;
}while(boolean_expression);
Java 與C 循 環 語 句 的 差 別 主 要 體 現 在 條 件 表 達 式,C 語 言 的 條 件 表 達 式 要 比Java 靈 活 的 多, 可 以 為 任 意 整 數 表 達 式.Java 則 必 須 為 布 爾 表 達 式.
循 環 語 句for
for 語 句 是 最 標 準 的 循 環 語 句, 幾 乎 所 有 的 高 級 編 程 語 言 都 提 供 了 類 似 的 循 環 語 句, 而 且 也 是 功 能 最 強 的 一 種 循 環 結 構.for 語 句 的 功 能 是 循 環 執 行 一 段 語 句, 直 到 某 個 條 件 為 假, 其 結 構 是:
for(expresson1;expression2;expression3)
{
statements;
}
Class sample2
{
public static void main(String args[])
{
char Ch;
int i=0;
boolean test=True;
while(test)
{
i+=1;
System.Out.println("nThe line %d",i");
If (I==10) test=false;
}
for(I=20;I<=30;I++)
System.Out.println("nThe line %d",i");
}
}
開 關 語 句switch
switch是條件語句的一個變種,其結構是:
switch(expression)
{
case 常 量1:
statement 1;
break;
case 常 量2:
statement 1;
break;
..........
default:
statement 1;
break;
}
執 行switch 語 句 時, 首 先 需 要 計 算 括 號 內 表 達 式 的 值, 然 後 把 這 個 值 與case 後 面 的 常 量 比 較. 執 行 第 一 個 匹 配 的 語 句 分 支; 若 無 匹 配 則 執 行 最 後 一 個default 分 支, 如 果 同 時 缺 省default 項, 則 不 執 行 任 何 語 句. 開 關 語 句 在Java 與C 中 的 使 用 完 全 一 樣. 轉 移 語 句break,continue, 返 回 語 句return 在Java 和C 中 的 使 用 方 法 一 樣, 只 是Java 中 的label 標 號 語 句 類 似C 語 言 中 的goto 語 句.Java 不 支 持goto 語 句.goto 語 句 會 導 致 很 多 麻 煩, 他 也 許 可 暫 時 解 決 一 個 問 題, 但 會 嚴 重 破 壞 程 序 的 可 擴 充 性.
Char ch;
Outlabel:
For(int I=0;I< 10;I++)
{
ch=(char)System.in.read();
switch(ch)
{
case 'a':
break Outlabel;
case 'b':
Sysyem.out.println
("nYou have entered a character b");
Break;
case 'c':
continue;
break;
default:
Sysyem.out.println
("nYou have entered a wrong character ");
Return;
}
通 過 以 上 簡 單 的 介 紹,Java 語 言 並 不 陌 生, 他 和C 的 流 程 幾 乎 完 全 一 致, 只 不 過 少 了goto 語 句. 但 實 際 上,Java 與C 在 流 程 控 制 上 還 是 有 其 他 一 些 細 微 的 差 別. 隨 著Java 學 習 的 不 斷 深 入, 你 會 有 深 刻 的 認 識 和 豐 富 的 收 獲。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989326/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JAVA與C++的多型異同JavaC++多型
- Objective-C 與 C++ 的異同ObjectC++
- C++之new、delete 與malloc、free的異同C++delete
- 深入探索Factory模式與Prototype模式的異同 (轉)模式
- session與cookie的異同SessionCookie
- 在C++中申請堆區空間與在C中申請堆區空間的異同點C++
- java與php區別或異同(整理、整合)JavaPHP
- Java控制流程Java
- Java和C++的基本差異(轉)JavaC++
- C與C++中的異常處理 (轉)C++
- JSF與Struts的異同JS
- 雲上大資料儲存:探究 JuiceFS 與 HDFS 的異同大資料UI
- Java流程控制Java
- C與C++中的異常處理11 (轉)C++
- C與C++中的異常處理13 (轉)C++
- C與C++中的異常處理12 (轉)C++
- C與C++中的異常處理14 (轉)C++
- C與C++中的異常處理15 (轉)C++
- C與C++中的異常處理16 (轉)C++
- C與C++中的異常處理17 (轉)C++
- C與C++中的異常處理3 (轉)C++
- C與C++中的異常處理4 (轉)C++
- C與C++中的異常處理5 (轉)C++
- C與C++中的異常處理7 (轉)C++
- C與C++中的異常處理6 (轉)C++
- C與C++中的異常處理9 (轉)C++
- C與C++中的異常處理8 (轉)C++
- C與C++中的異常處理10 (轉)C++
- [譯] 同中有異的 Webpack 與 RollupWeb
- oracle與infomix異同點Oracle
- Java語言和C++語言的差異 (轉)JavaC++
- java字串“==”與“equals”的差異及與c#的區別Java字串C#
- java 在控制檯上輸入密碼時,密碼不顯示在控制檯上Java密碼
- JavaScript中var與let的異同點JavaScript
- 編譯器GCC與Clang的異同編譯GC
- Scala與Java差異(二)之條件控制與迴圈Java
- 走進C# abstract,瞭解抽象類與介面的異同C#抽象
- Java 中 this 和 super 的用法概述及異同Java