《Java從入門到失業》第三章:基礎語法及基本程式結構(3.8):流程控制(選擇語句、if-else語句、switch語句)

Java大失叔發表於2020-09-05

3.8流程控制

       到此為止,我們已經基本瞭解了Java的基礎語法,會定義不同型別的變數,會命名,會給變數賦值和運算等。接下來,我們需要學會流程控制方面的知識。

3.8.1選擇語句

3.8.1.1if-else語句

       你們一定都買過彩票吧,沒買過的舉手!很好,都買過。買完之後,是不是經常幻想中了500萬之後幹什麼?我經常幻想中了500萬後就買輛寶馬X5。那麼用程式來描述這個問題,就可以用if條件語句,像下面這樣:

我們把現實需求轉化為流程控制模型,然後用程式碼語句實現。幻想很美好,現實很殘酷。買彩票的錢經常都是打水漂。但是我們就不買了嗎?NO,我覺得下次我一定會中!那麼就變成了下面這樣:

 

買了幾十期之後,我們發現偶爾還會見到回頭錢,有時候中個5塊,有時候中個10塊,有時候還能運氣爆棚一下,中個200塊。像筆者中10塊的時候,下一期就多買5注,中200的時候,就會去擼個串打個牙祭:

 

if條件語句非常簡單,但是需要注意幾點:

  • “條件”可以是簡單的boolean變數或常量,也可以是複雜的表示式,但是最終結果必須是一個boolean值
  • 當程式碼塊只有一條語句時,“{}”可以省略,但是不建議這麼做
  • if-else條件語句是可以巢狀的,即上圖中的程式碼塊還可以繼續使用if-else語句。

在編寫程式的時候,需要注意程式碼縮排保證可讀性。比如像上圖程式碼可以改寫成:

if (n >= 5000000) {  
    System.out.println("買一輛寶馬X5");  
} else {  
    if (n >= 200) {  
        System.out.println("擼串");  
    } else if (n >= 10) {  
        System.out.println("多買5注");  
    }  
}  

3.8.1.2switch語句

       對於上面那個例子,條件是判斷一個值是否等於某個值,並且選項很多,對於這種情況,還可以用另外一種選擇語句來描述,就是switch語句。switch在處理多個選項時,比較方便。它的基本語法結構如下:

 

編碼舉例如下:

switch (n) {  
case 5000000:  
    System.out.println("買一輛寶馬X5");  
    break;  
case 200:  
    System.out.println("擼串");  
    break;  
case 10:  
    System.out.println("多買5注");  
    break;  
default:  
    System.out.println("買一注");  
    break;  
}  

需要特別注意的是圖中3段文字。總結成文字如下:

  1. switch 語句中的變數型別可以是: byte、short、int 或者 char。從 Java SE 7 開始支援字串 String 型別了,同時 case 標籤必須為字串常量或字面量。
  2. switch 語句可以擁有多個 case 語句。每個 case 後面跟一個要比較的值和冒號。
  3. case 語句中的值的資料型別必須與變數的資料型別相同,而且只能是常量或者字面常量。
  4. 當變數的值與 case 語句的值相等時,那麼 case 語句之後的語句開始執行,直到 break 語句出現才會跳出 switch 語句。
  5. 當遇到 break 語句時,switch 語句終止。程式跳轉到 switch 語句後面的語句執行。case 語句不必須要包含 break 語句。如果沒有 break 語句出現,程式會繼續執行下一條 case 語句,直到出現 break 語句。
  6. switch 語句可以包含一個 default 分支,該分支一般是 switch 語句的最後一個分支(可以在任何位置,但建議在最後一個)。default 在沒有 case 語句的值和變數值相等的時候執行。default 分支不需要 break 語句。

 至於switch和if-else的選擇,筆者沒有做太多的研究,據網上一些文章說,當選擇項比較多的時候switch效率要高一些。不過筆者在實際運用中,很少使用switch。

相關文章