Strings in switch Statements


In the JDK 7 release, you can use a String object in the expression of a switch statement:

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;
}

The switch statement compares the String object in its expression with the expressions associated with each case label as if it were using the String.equals method; consequently, the comparison of String objects in switch statements is case sensitive. The Java compiler generates generally more efficient bytecode from switch statements that use String objects than from chained if-then-else statements.

Leave a comment