switch 文の文字列

JDK 7 リリースでは、switch 文の式に String オブジェクトを使用できます。

public String getTypeOfDayWithSwitchStatement(String dayOfWeekArg) {
     String typeOfDay;
     switch (dayOfWeekArg) {
         case "Monday":
             typeOfDay = "Start of work week";
             break;
         case "Tuesday":
         case "Wednesday":
         case "Thursday":
             typeOfDay = "Midweek";
             break;
         case "Friday":
             typeOfDay = "End of work week";
             break;
         case "Saturday":
         case "Sunday":
             typeOfDay = "Weekend";
             break;
         default:
             throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
     }
     return typeOfDay;
}

switch 文では、その式内の String オブジェクトが、各 case ラベルの式と比較されます。String.equals メソッドを使用した場合と同様の比較が行われるため、結果として、switch 文の String オブジェクトの比較では大文字と小文字が区別されます。通常、Java コンパイラで生成されるバイトコードの効率は、String オブジェクトを使用する switch 文の方が、一連の if-then-else 文よりも高くなります。


Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.