咱們都知道 switch
用來走流程分支,大多狀況下用來匹配單個值,以下面的例子所示:微信
/** * @from 微信公衆號:Java技術棧 * @author 棧長 */ private static void test(int value) { switch (value) { case 1: System.out.println("1"); break; case 2: System.out.println("1"); break; case 3: System.out.println("1"); break; case 4: System.out.println("1"); break; case 5: System.out.println("1"); break; case 6: System.out.println("0"); break; case 7: System.out.println("0"); break; default: System.out.println("-1"); } }
相關閱讀:switch case 支持的 6 種數據類型。spa
大概的意思就是,週一到週五輸出:1,週六到週日輸出:0,默認輸出-1。code
這樣寫,不少重複的邏輯,冗餘了。開發
也許這個例子不是很合適,用 if/ else 更恰當,但這只是個例子,實際開發中確定會有某幾個 case 匹配同一段邏輯的狀況。rem
那麼,如何讓多個 case 匹配同一段邏輯呢?get
以下面例子所示:it
/** * @from 微信公衆號:Java技術棧 * @author 棧長 */ private static void test(int value) { switch (value) { case 1: case 2: case 3: case 4: case 5: System.out.println("1"); break; case 6: case 7: System.out.println("0"); break; default: System.out.println("-1"); } }
把相同邏輯的 case 放一塊兒,最後一個 case 寫邏輯就好了。class
格式化後就是這樣了:test
/** * @from 微信公衆號:Java技術棧 * @author 棧長 */ private static void test(int value) { switch (value) { case 1: case 2: case 3: case 4: case 5: System.out.println("1"); break; case 6: case 7: System.out.println("0"); break; default: System.out.println("-1"); } }
是否是很騷?後臺
其實這不是最合適的最好的寫法,在 Java 12 中還能夠更騷。
在 Java 12 中能夠用逗號來分開多個值,還能用 lambda
表達式,甚至還能省略 break,使用 switch
更方便,具體看這篇文章:Java 12 騷操做, switch竟然還能這樣玩,或者關注微信公衆號:Java技術棧,在後臺回覆 "新特性" 獲取這篇文章。