天天看點

Java核心技術卷I基礎知識3.8.5 多重選擇:switch語句

<b>3.8.5 多重選擇:switch語句</b>

在處理多個選項時,使用if/else結構顯得有些笨拙。java有一個與c/c++完全一樣的switch語句。

例如,如果建立一個如圖3-13所示的包含4個選項的菜單系統,可以使用下列代碼:

switch語句将從與選項值相比對的case标簽處開始執行直到遇到break語句,或者執行到switch語句的結束處為止。如果沒有相比對的case标簽,而有default子句,就執行這個子句。

      警告:有可能觸發多個case分支。如果在case分支語句的末尾沒有break語句,那麼就會接着執行下一個case分支語句。這種情況相當危險,常常會引發錯誤。為此,我們在程式中從不使用switch語句。

如果你比我們更喜歡switch語句,編譯代碼時可以考慮加上-xlint:fallthrough選項,如下所示:

這樣一來,如果某個分支最後缺少一個break語句,編譯器就會給出一個警告消息。

如果你确實正是想使用這種“直通式”(fallthrough)行為,可以為其外圍方法加一個标注@suppresswarnings("fallthrough")。這樣就不會對這個方法生成警告了。(标注是為編譯器或處理java源檔案或類檔案的工具提供資訊的一種機制。我們将在卷Ⅱ的第8章詳細讨論标注。)

圖3-13 switch語句的流程圖

case标簽可以是:

類型為char、byte、short或int的常量表達式。

枚舉常量。

從java se 7開始,case标簽還可以是字元串字面量。

例如:

當在switch語句中使用枚舉常量時,不必在每個标簽中指明枚舉名,可以由switch的表達式值确定。