首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java switch 語句使用必知的四大細節

     編輯:Java 程式設計入門

語法結構

switch (整數選擇因子) {
    case 整數值1: 語句; break;
    case 整數值2: 語句; break;
    // ...
    default: 語句;
}

四大注意細節

1. case 標籤類型限制

  • 只能是 int 類型 或可隱式轉換為 int 的類型:byte、short、char。
  • long、float、double、boolean 不能直接用作 case 標籤。
  • Java 8 以前不支持 String,Java 7+ 支持 String(編譯器插桩實現)。

2. case 後可跟常量表達式

case 標籤必須是編譯期常量,可為字面量或 final 常量,不能是變量。

final int A = 1;
switch (x) {
    case A: ... // 合法
    case 1+2: ... // 合法,編譯期計算
    case someVar: // 編譯錯誤
}

3. break 的關鍵作用

  • break 用於跳出整個 switch 塊。
  • 若省略 break,會發生「貫穿」現象:繼續執行下一個 case 的代碼,直到遇到 break 或 switch 結束。
  • 有時可利用貫穿特性合併多條件處理,但需加註釋說明。

4. 善用 default 分支

  • default 在所有 case 都不匹配時執行,位置可放在任意處(通常置末)。
  • 優秀程序員會用 default 捕獲異常輸入、記錄日誌或拋出異常,增強代碼健壯性。
  • 即使邏輯上「不可能走到 default」,也建議保留作為防禦性編程。

數據類型轉換補充

  • Java 8 種基本類型:byte、short、char、int、long、float、double、boolean。
  • boolean 不能與任何數值類型轉換。
  • 小類型自動提升為大類型(byte→short→int→long→float→double)。
  • 大類型轉小類型需強制轉換(可能丟失精度/溢出)。

最佳實踐建議

  1. 優先使用 enum 作為 switch 因子,編譯器可檢查覆蓋完整性。
  2. 每個 case 以 break 結尾,若故意貫穿需加 // fall through 註釋。
  3. 始終包含 default 分支處理未預期值。
  4. Java 12+ 可使用 switch 表達式(-> 箭頭語法),自動無貫穿、返回值,更簡潔安全。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved