我們都知道 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 種數據類型。
大概的意思就是,周一到周五輸出:1,周六到周日輸出:0,默認輸出-1。
這樣寫,很多重復的邏輯,冗余了。
也許這個例子不是很合適,用 if/ else 更恰當,但這只是個例子,實際開發中肯定會有某幾個 case 匹配同一段邏輯的情況。
那么,如何讓多個 case 匹配同一段邏輯呢?
如下面例子所示:
/**
* @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 寫邏輯就行了。
格式化后就是這樣了:
/**
* @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居然還能這樣玩。