編程語言使用控制(control )語句來產生執行流,從而完成程序狀態的改變,如程序順序執行和分支執行。java 的程序控制語句分為以下幾類:選擇,重復和跳轉。根據表達式結果或變量狀態選擇(Selection )語句來使你的程序選擇不同的執行路徑。重復(Iteration)語句使程序能夠重復執行一個或一個以上語句(也就是說,重復語句形成循環)。跳轉(Jump )語句答應你的程序以非線性的方式執行。下面將分析Java 的所有控制語句。
假如你熟悉C/C++ ,那么把握Java 的控制語句將很輕易。事實上,Java 的控制語句與C/C++ 中的語句幾乎完全相同。當然它們還是有一些差別的——尤其是break語句與continue 語句。
5.1.1 if語句
if語句曾在第2章中介紹過,我們將在這里對它進行具體討論。if語句是Java 中的條件分支語句。它能將程序的執行路徑分為兩條。if語句的完整格式如下:
if (condition) statement1;
else statement2;
其中,if和else的對象都是單個語句(statement ),也可以是程序塊。條件condition 可以是任何返回布爾值的表達式。else子句是可選的。
if語句的執行過程如下:假如條件為真,就執行if的對象(statement1 );否則,執行else 的對象(statement2 )。任何時候兩條語句都不可能同時執行。考慮下面的例子:
int a,b; // ...if(a < b) a = 0;else b = 0;
本例中,假如a小于b,那么a被賦值為0;否則,b被賦值為0。任何情況下都不可能使a 和b都被賦值為0。
通常,用于控制if語句的表達式都包含關系運算符。當然,這在技術上并不是必要的。僅用一個布爾值來控制if語句也是可以的,如下面的程序段:
boolean dataAvailable;
記住,直接跟在if 或else語句后的語句只能有一句。假如你想包含更多的語句,你需要建一個程序塊,如下面的例子:
int bytesAvailable;
// ...
if (bytesAvailable > 0) {
ProcessData();bytesAvailable -= n;} elsewaitForMoreData();
這里,假如變量bytesAvailable 大于0,則if塊內的所有語句都會執行。
一些程序員覺得在使用if語句時在其后跟一個大括號是很方便的,甚至在只有一條語句的時侯也使用大括號。這使得在日后添加別的語句變得輕易,并且你也不必擔心忘記括號。事實上,當需要定義塊時而未對其進行定義是一個導致錯誤的普遍原因。例如,考慮下面的程序段:
int bytesAvailable;
// ...
if (bytesAvailable > 0) {
ProcessData();bytesAvailable -= n;
} else
waitForMoreData();
bytesAvailable = n;
由于編排的原因,看起來似乎bytesAvailable = n 語句應該在else子句中執行。然而,當你調用時,空白對Java 無關緊要,編譯器無法知道你的意圖。這段程序會通過編譯,但運用時會出錯。上述例子應修改如下:
int bytesAvailable;
// ...
if (bytesAvailable > 0) {
ProcessData();
bytesAvailable -= n;
} else {
waitForMoreData();
bytesAvailable = n;
新聞熱點
疑難解答