在處理多個選項時,使用 if/else 結構顯得有些笨拙。Java 有一個 switch 語句。java
switch 語句將從與選項值相匹配的 case 標籤開始執行,直到遇到 break 語句,或者執行到 switch 語句的結束處爲止。若是沒有相匹配的 case 標籤,而有 default 子句,就執行這個子句。ide
下面是一個 switch 的例子:工具
Scanner in = new Scanner(System.in); System.out.println("請輸入 一、二、三、4 !"); int choice = in.nextInt(); switch(choice) { case 1: System.out.println("輸入的值爲: " + choice); break; case 2: System.out.println("輸入的值爲: " + choice); break; case 3: System.out.println("輸入的值爲: " + choice); break; case 4: System.out.println("輸入的值爲: " + choice); break; default: System.out.println("bad input"); break; }
有可能觸發多個 case 分支。若是在 case 分支語句的末尾沒有 break 語句,那麼就會接着執行下一個 case 分支語句。這種狀況至關危險,經常會引起錯誤。爲此,咱們在程序中從不使用 switch 語句。
若是你比咱們更喜歡 switch 語句,編譯代碼時能夠考慮加上 -Xlint:fallthrough 選項,以下所示:
javac -Xlint:fallthrough Test.java
這樣以來,若是某個分支最後缺乏一個 break 語句,編譯器就會給出一個警告消息。
若是你肯定正是想使用這種「直通式」(fallthrough)行爲,能夠爲其外圍方法加上一個標註 @SuppressWarnings("fallthrough")。這樣就不會對這個方法生成警告了。(註解是爲編譯器或處理 Java 源文件或類文件的工具提供信息的一種機制。)code
case 標籤能夠是:blog
當在 switch 語句中使用枚舉常量時,沒必要在每一個標籤中指明枚舉名,能夠由 switch 的表達式值推導得出。例如:
enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};
字符串
Size sz = Size.SMALL; switch (sz) { case SMALL: // 不須要使用 Size.SMALL ... break; ... }