淺談流程控制語句

在一個程序的執行過程中,語句的執行順序對運行的結果是有着直接影響的。有時候我們需要控制語句的執行順序來完成我們想要實現的功能。所以掌握流程控制語句的使用是非常有必要的。
流程控制語句分爲了三種:順序結構、選擇結構以及循環結構。

順序結構

順序結構是流程控制語句中最簡單的,它沒有什麼複雜的語法,也沒有什麼特定的語法結構。依照程序中代碼的先後順序,順序依次執行。
概括來說順序結構可以總結爲:寫在前面的代碼先執行,寫在後面的代碼後執行。

順序結構的執行流程如下:
從上往下,依次執行。
在這裏插入圖片描述

選擇結構

選擇結構也稱爲分支結構,顧名思義,選擇結構就是有分支的,要根據條件選擇一個分支往下執行。
選擇結構有其特定的語法結構,要根據具體的邏輯運算(邏輯運算有兩種 true和false)來進行分支的選擇,根據不同的選擇執行不同的代碼。

選擇結構有兩種:if語句和switch語句。

if語句

if語句有三種形式。

形式一
if(比較表達式或boolean類型的值){
語句體;
}

執行流程爲:

  • 先執行if括號裏的語句,如果是表達式則計算表達式的值,看值是true還是false。如果是boolean類型的值就直接看其實true還是false。
  • 若爲true,則執行if大括號裏的語句體。
  • 若爲false,則不執行大括號裏的語句體,直接執行if語句後面的語句。
    在這裏插入圖片描述

形式二
if(關係表達式){
語句體1;
} else {
語句體2;
}

執行流程爲:

  • 先計算if括號裏的關係表達式的值,判斷值是爲true還是false
  • 若爲true,則執行語句體1
  • 若爲false,則執行語句體2
    在這裏插入圖片描述

形式三
if(關係表達式1){
語句體1;
} else if(關係表達式2){
語句體2;
} else {
語句體3;
}

執行流程爲:

  • 先計算關係表達式1的值,判斷值是true還是false
  • 若爲true,則執行語句體1
  • 若爲false,則計算關係表達式2的值,判斷值是true還是false
  • 若爲true,則執行語句體2
  • 若爲false,則執行語句體3

在這裏插入圖片描述

switch語句

switch語句的格式:
switch(表達式){
case 值1:
語句體1;
break;
case 值2:
語句體2;
break;
case 值3:
語句體3;
break;
. . .
default:
語句體n+1;
break;
}

語句的執行流程

  • 先判斷switch括號裏的表達式的值
  • 再將判斷的值與每個case項裏的值依次進行比較
  • 若相等就執行該case項裏的語句
  • 若不相等就接着往下比較
  • 若沒有case項的值與表達式的值相等,就執行default裏的語句

對switch語句的說明:

  • switch語句表達式裏的值可以是byte、short、char以及int類型;JDK5之後還支持枚舉類型,JDK7之後支持String類型。
  • case後面跟的是要跟表達式的值進行比較的值
  • 語句體部分可以是一條語句也可以是多條語句
  • break的意思是中斷,結束,執行break語句可以結束switch語句
  • default語句時默認語句,即當所有的case值都與表達式的值不匹配時,就執行default語句的內容,該語句類似if語句的else。

在使用switch語句需要注意的是:

  • case後面跟的只能是常量,不能爲變量,而且多個case後面跟的值不能相同
  • switch語句的中default語句可以省略不寫,但是最好還是寫上,這是對所有case項的值不等於表達式的值的一種提示
  • 同樣,break語句,也可以省略不寫,但是省略之後的結果可能不是我們想要的(會出現case穿透的現象:一直往下執行直到遇到break語句或者switch語句執行結束),所以最好還是寫上
  • 在寫default語句的時候,我們一般將它放在switch語句的最後面,其實default語句可以放在任意位置
  • 對於switch語句而言有兩種結束的條件:要麼是遇到break要麼是程序執行完

我們在做判斷的時候,有兩種選擇語句,那麼我們該如何進行選擇呢?
在下面這幾種情況我們可以考慮使用if語句:

  • 針對一個範圍的判斷
  • 針對結果是boolean類型的判斷
  • 針對是幾個常量值的判斷(也可以使用switch語句)

循環結構

談到循環結構,就不得不提使用循環結構的場景了,當我們需要反覆執行一段代碼的時候,就需要考慮使用循環結構了。
那麼什麼是循環結構呢?簡單來說,就是在滿足循環的條件時,反覆執行同一段代碼(稱這段代碼爲循環體語句),直到不滿足循環條件結束爲止。

循環結構細分爲for循環、while循環以及do . . .while循環。

for循環

for循環的格式:
for(初始化表達式語句;判斷條件語句;控制條件語句){
循環體語句;
}

for循環的執行流程:

  • 先執行初始化表達式語句
  • 再執行判斷條件語句,看其返回值是true還是false
  • 若爲true就繼續執行,執行循環體語句,繼而執行控制條件語句
  • 若爲false就結束循環
    在這裏插入圖片描述
    使用for循環需要注意的是:
  • for循環的循環語句體若是一條語句,大括號可以省略不寫,若是多條語句,大括號不能省略。所以不論是多條語句還是一條語句,都加上大括號
  • for循環的判斷條件語句不論有多複雜或多簡單其值都是boolean類型的
  • 有左大括號就沒有分號,有分號就沒有左大括號

while循環

while循環的格式:
初始化表達式語句;
while(判斷條件語句){
循環體語句;
控制條件語句
}

while語句的執行流程:

  • 先執行初始化表達式語句
  • 執行判斷條件語句,看其值是true還是false
  • 若爲true,則繼續執行,執行循環體語句,執行控制條件語句
  • 若爲false,則結束循環

while語句的執行流程圖同for語句:
在這裏插入圖片描述

do . . .while循環

do . . .while循環的格式:

初始化表達式語句;
do{
循環體語句;
控制條件語句;
}while(判斷條件語句);

do . . .while循環的執行流程爲:

  • 先執行初始化表達式語句
  • 進入do . . .while循環,執行循環體語句,執行控制條件語句
  • 執行判斷條件語句,看其值是true還是false
  • 若爲true,則繼續循環,執行循環體語句和控制條件語句
  • 若爲false,則結束循環
    在這裏插入圖片描述

雖然for循環、while循環以及do . . . while循環都可以用來表示循環結構,但是三者還是有區別的。

  • 在三個循環結構中,對於for循環和while循環來說,當判斷條件爲false時,不會去執行循環體語句就立即結束循環。而do . . . while循環是先執行循環體語句,再執行判斷條件語句,當判斷條件爲false,再結束循環。相比for和while來說,do . . .while至少執行一次循環體語句。
  • 當知道循環次數的時候,可以使用for循環,當不知道循環次數但是知道循環結束條件時,可以使用while循環
  • 在不知道使用什麼循環語句時,可以先考慮使用for循環,其次是while循環,最後是do . . .while循環。
  • 想在循環結束後,繼續使用控制條件語句的變量的時候,可以考慮:
    1. 使用while循環
    2. 使用for循環時,是括號裏執行的初始化表達式語句的,當for循環結束後,會釋放變量的內存空間(提高內存使用效率);若非要用for循環且不考慮提高內存效率時,可以將初始化表達式語句寫在for循環的前面

死循環

死循環,即靠自身控制無法終止的循環。
以下是死循環的例子:
for(;;){
}
while(true){
}
我們在寫循環語句的時候,一不小心就可能寫成死循環,一定注意控制條件語句的變量的問題。

控制跳轉語句

掌握了循環語句後,就需要掌握控制跳轉語句。在寫循環的時候,到了某一步程序實現不了,需要結束或者需要進入到下一次循環,在這種情況下,控制跳轉語句就發揮作用啦。

控制跳轉語句有:break(中斷)、continue(繼續)以及return(返回)。

break

break:中斷。用於中斷當前程序的執行,接着執行後面的程序。

break語句可以用在

  • switch語句裏(結束switch語句)
  • 循環語句裏:單層循環,直接跳出循環;多層循環,若語句沒有標籤(標籤的格式: 標籤:語句),就跳出最裏層的循環,若有標籤,就跳出該標籤對應的循環語句。

continue

continue:繼續。用於結束本次循環,繼續下次循環。
continue語句一般用在循環語句裏。

return

return:返回。即退出一個方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章