<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## [switch](https://lingcoder.gitee.io/onjava8/#/book/05-Control-Flow?id=switch) **switch**有時也被劃歸為一種選擇語句。根據整數表達式的值,**switch**語句可以從一系列代碼中選出一段去執行。它的格式如下: ~~~ switch(integral-selector) { case integral-value1 : statement; break; case integral-value2 : statement; break; case integral-value3 : statement; break; case integral-value4 : statement; break; case integral-value5 : statement; break; // ... default: statement; } ~~~ 其中,**integral-selector**(整數選擇因子)是一個能夠產生整數值的表達式,**switch**能夠將這個表達式的結果與每個**integral-value**(整數值)相比較。若發現相符的,就執行對應的語句(簡單或復合語句,其中并不需要括號)。若沒有發現相符的,就執行**default**語句。 在上面的定義中,大家會注意到每個**case**均以一個**break**結尾。這樣可使執行流程跳轉至**switch**主體的末尾。這是構建**switch**語句的一種傳統方式,但**break**是可選的。若省略**break,**會繼續執行后面的**case**語句的代碼,直到遇到一個**break**為止。通常我們不想出現這種情況,但對有經驗的程序員來說,也許能夠善加利用。注意最后的**default**語句沒有**break**,因為執行流程已到了**break**的跳轉目的地。當然,如果考慮到編程風格方面的原因,完全可以在**default**語句的末尾放置一個**break**,盡管它并沒有任何實際的作用。 **switch**語句是一種實現多路選擇的干凈利落的一種方式(比如從一系列執行路徑中挑選一個)。但它要求使用一個選擇因子,并且必須是**int**或**char**那樣的整數值。例如,假若將一個字串或者浮點數作為選擇因子使用,那么它們在 switch 語句里是不會工作的。對于非整數類型(Java 7 以上版本中的 String 型除外),則必須使用一系列**if**語句。 在[下一章的結尾](https://lingcoder.gitee.io/onjava8/#/./06-Housekeeping?id=%e6%9e%9a%e4%b8%be%e7%b1%bb%e5%9e%8b)中,我們將會了解到**枚舉類型**被用來搭配**switch**工作,并優雅地解決了這種限制。 下面這個例子可隨機生成字母,并判斷它們是元音還是輔音字母: ~~~ // control/VowelsAndConsonants.java // switch 執行語句的演示 import java.util.*; public class VowelsAndConsonants { public static void main(String[] args) { Random rand = new Random(47); for(int i = 0; i < 100; i++) { int c = rand.nextInt(26) + 'a'; System.out.print((char)c + ", " + c + ": "); switch(c) { case 'a': case 'e': case 'i': case 'o': case 'u': System.out.println("vowel"); break; case 'y': case 'w': System.out.println("Sometimes vowel"); break; default: System.out.println("consonant"); } } } } ~~~ 輸出結果: ~~~ y, 121: Sometimes vowel n, 110: consonant z, 122: consonant b, 98: consonant r, 114: consonant n, 110: consonant y, 121: Sometimes vowel g, 103: consonant c, 99: consonant f, 102: consonant o, 111: vowel w, 119: Sometimes vowel z, 122: consonant ... ~~~ 由于`Random.nextInt(26)`會產生 0 到 25 之間的一個值,所以在其上加上一個偏移量`a`,即可產生小寫字母。在**case**語句中,使用單引號引起的字符也會產生用于比較的整數值。 請注意**case**語句能夠堆疊在一起,為一段代碼形成多重匹配,即只要符合多種條件中的一種,就執行那段特別的代碼。這時也應該注意將**break**語句置于特定**case**的末尾,否則控制流程會繼續往下執行,處理后面的**case**。在下面的語句中: ~~~ int c = rand.nextInt(26) + 'a'; ~~~ 此處`Random.nextInt()`將產生 0~25 之間的一個隨機**int**值,它將被加到`a`上。這表示`a`將自動被轉換為**int**以執行加法。為了把`c`當作字符打印,必須將其轉型為**char**;否則,將會輸出整數。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看