首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java switch 穿透特性詳解:無 break 時繼續執行後續 case

     編輯:程式設計疑難解答

代碼示例

int num = 1;
switch (num) {
    case 1: System.out.println("1");
    case 2: System.out.println("2"); break;
    case 3: System.out.println("3"); break;
    default: System.out.println("4");
}

輸出結果

1
2

原理解析

  • switch 匹配到 case 1 後,**順序執行**後續所有語句,直到遇到 break 或 switch 結束。
  • 不關心後續 case 的常量值是否匹配,**匹配只是入口**,進入後按順序落下。
  • 這稱為 **fall-through(穿透)**,可用於多值共享邏輯:
    case 1: case 2: case 3: doSomething(); break;

最佳實踐

  1. 每個 case 邏輯結束**必須加 break**(或 return/throw)。
  2. Java 12+ 支持 switch 表達式(-> 箭頭語法),**無穿透**,更安全:
    String result = switch (num) {
        case 1 -> "一";
        case 2 -> "二";
        default -> "其他";
    };
  3. 若故意使用穿透,添加註釋 // fall through 供編譯器/靜態分析工具識別。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved