switch-case最容易忽視的一點


  switch語句是常用的一種java語法,但是往往最基本的,總是最容易被人們忽略。

  首先,看下switch語句的基本結構:

switch(表達式){
        case 常量1:
            語句1;
            break;
        case 常量2:
            語句2;
            break;
        … …
        case 常量N:
            語句N;
            break;
        [default:
            語句;
            break;]
     } 

  從結構上很明顯,可以看出case和break一一對應,那么,有一個問題:“是否只有case滿足的情況下,才會執行內部的語句呢”,這個答案很多人覺得,那肯定的,真的嗎?

  假如,滿足了一個case,可是沒有對應的break,那么,接下來的case內部的語句是否還會繼續執行?滿足的時候執行,不滿足就不執行,真的是這樣嗎?看一個簡單的例子:

public class SwitchTest {

    public static void main(String[] args) {
        testSwitch(1);
    }

    private static void testSwitch(int i) {
        switch (i) {
        case 1:
            System.out.println(1);
        case 2:
            System.out.println(2);
            break;
        default:
            System.out.println(3);
        }
    }
}

  觀察代碼可以看出,第一個case並沒有與之對應的break,那么,輸出結果是什么呢?估計很多人覺得很簡單啊,答案是:1。

  但是,run一下,輸出的結果是:1  2 

  也就是說,第二個case內部的語句也執行了,奇怪嗎?剛開始我也覺得很奇怪,於是就只能查找資料,最后得出一個結果:

  swtich中的case並不帶有判斷功能(也就是說並不是滿足執行,不滿足就不執行),case只相當於識別標志,遇到了符合的case,swtich內部就會改變該標志,從這個標志點一直往下執行,直到遇到break才會跳出。

  所以上面執行到case 2的break才退出,如果把case 2 的break也刪除,答案就是:1 2 3


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM