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