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 文よりも高くなります。