第四節:Java 控制語句
1. 條件控制語句
在生活中我們有很多時候都會面臨選擇,在做選擇之前我們會進行一系列的判斷。比如對於今天是否要出門這樣的選擇,我們會對天氣做一個判斷。如果天氣好,我們就出門;如果天氣不好,我們就不出門。這種需要先判斷條件,條件滿足後才執行的情況我們就可以用條件控制語句來實現。
1.1 if語句
if 語句便是一種判斷語句。
if(一個boolean表示式或一個boolean值){
條件執行時的程式碼;
}

if...else 語句當條件成立時,則執行 if 部分的程式碼塊; 條件不成立時,則進入 else 部分。例如,如果一個月天數大於30天,則為大月,否則為小月。
語法:
if(if語句的條件的表示式){
//如果條件的表示式為TRUE則程式碼執行跳過
//else程式碼段,反之亦然。
}else{
}

多重 if 語句,在條件 1 不滿足的情況下,才會進行條件 2 的判斷,以此向下;當前面的條件均不成立時,最終執行 else 塊內的程式碼。

注意:如果 if(或 else if,或 else)條件成立時的執行語句只有一條,是可以省略大括號的!但如果執行語句有多條,那麼大括號就是不可或缺的。
如:

if 語句是可以在內層進行巢狀的。巢狀 if 語句,只有當外層 if 的條件成立時,才會判斷內層 if 的條件。
語法:

接下來我們來做一個簡單的練習吧:小明考了78分,60分以上及格,80分以上為良好,90分以上為優秀,60分以下要重考,編寫一段程式,輸出小明的情況吧。
參考程式碼如下:

注:所有的條件語句都是利用條件表示式的真或假來決定執行路徑,Java裡不允許將一個數字作為布林值使用,雖然這在C和C++是允許的,如果要在布林測試裡使用一個非布林值,需要先用一個條件表示式將其轉換成布林值,其他控制語句同理。
1.2 switch語句
上面木木給大家詳細地介紹了 if 語句,接下來我們還要學習另一種條件語句:switch 語句。當需要對選項進行等值判斷時,使用 switch 語句更加簡潔明瞭。比如:搖號搖到1的得一等獎,搖到2的得二等獎,搖到3的等三等獎,搖到其他的沒有獎。
語法:

當 switch 後表示式的值和 case 語句後的值相同時,從該位置開始向下執行,直到遇到 break 語句或者 switch 語句塊結束;如果沒有匹配的 case 語句則執行 default 塊的程式碼。
例如:

2. 迴圈控制語句
在我們的日常生活中,為了完成某些事情,我們需要重複地執行某些動作,比如我們走路的時候,要左右腳不停的重複交替。在計算機中,對一些重複的事情,是不是需要我們不停的輸入呢?其實有一個更好的辦法,迴圈語句。
2.1 while和do-while語句
while語法:
while(while語句條件的表示式){
程式碼塊;
}
while 的執行過程是先判斷,再執行。
判斷 while 後面的條件是否成立( true or false )
當條件成立時,執行迴圈內的程式碼,然後重複執行1.、2., 直到迴圈條件不成立為止

do-while語法:
do{
程式碼塊;
}while(do-while條件表示式);
do-while 的執行過程是先執行,再判斷(所以迴圈內的程式碼至少會執行一次)

接下來我們就來看一下吧:分別用 while 和 do-while 兩種方法,編寫一個程式,實現 1-1000 中所有偶數的和,並輸出。驗證一下兩種方法輸出的結果是一致嗎?
程式碼如下:

2.2 for語句
最後我們來學習另一個迴圈語句for 語句
for語法:
for(1.初始化語句;2.條件語句;4.條件變化語句){
//3.for語句迴圈體
}
for 相比 while 和 do-while 語句結構更加簡潔易讀,它的執行順序:
執行迴圈變數初始化部分,設定迴圈的初始狀態,此部分在整個迴圈中只執行一次
進行迴圈條件的判斷,如果條件為 true,則執行迴圈體內程式碼;如果為 false ,則直接退出迴圈
執行迴圈變數變化部分,改變迴圈變數的值,以便進行下一次條件判斷
依次重新執行2.、3.、4.,直到退出迴圈

例如,計算100以內不能被3整除的數之和:

在講條件控制語句的時候,講解了 if 語句的巢狀,在迴圈語句裡,三種迴圈語句可以自身巢狀,也可以相互巢狀,最常見的就是二重迴圈。在二重迴圈中,外層迴圈每執行一次,內層迴圈要執行一圈。
比如我想列印
*
**
***
****
這樣的圖形

例如:將這樣的圖形列印在控制檯上
1
12
123
1234
12345
參考程式碼如下:

注意:Java語法規定(for語句,while語句,do-while語句,if語句和if-else語句)在這些中建立的變數在外部(可以理解為,在這些語句的大括號外)是無法使用的。
例如:

3 .跳轉語句
在上面講解 switch 語句的時候,看到了break這個關鍵字,它有什麼用呢?我們將上面 switch 練習題裡的程式碼中break去掉,執行一下,發現了什麼問題嗎?break的意思為跳出,經常用在條件和迴圈語句中,用來跳出 迴圈語句 的。
例如:

上面的程式碼中,本來 for 語句會使得迴圈體內的程式碼迴圈10次,但當i=3時,進入了第一個條件語句,遇到了break,結束了迴圈,而永遠也進不了第二個條件語句。
在跳轉語句中,還有一個continue跟break很像,它的作用是跳過迴圈體中剩餘的語句執行下一次迴圈。
比如我們要列印10以內的所有奇數:

4 .其他
在迴圈語句中,Java SE5 引入了一種新的更加簡潔的for語法用於陣列和容器,即foreach語法。我們將在後面的章節遇到。
goto起源於組合語言的程式控制,儘管它仍是 Java 的一個保留字,但在語言中並沒有使用它。
歡迎關注微信公眾號:Java的學習之路
裡面資料非常全,從java初級到高階都有,視訊,電子書,面試寶典,簡歷模板,經典案例,原始碼分析程式設計師故事以及解決bug方法。。。。應有盡有,可以推薦大家一起學習下!!
