Java 7 поддерживает переключение с Strings
подобно приведенному ниже коду
switch (month.toLowerCase()) {
case "january":
monthNumber = 1;
break;
case "february":
monthNumber = 2;
break;
default:
monthNumber = 0;
break;
}
Использует ли Java метод equals()
для каждого случая String
? Или он полагается на ==
или intern()
?
Это просто эквивалентно:
String month = month.toLowerCase();
if("january".equals(month)){
monthNumber = 1;
}else if("february".equals(month)){
monthNumber = 1;
}..
UPDATE:
Строка в выражении switch сравнивается с выражениями связанные с каждым ярлыком case , как если бы метод
String.equals
был используется.
Как отмечают документы, поведение выглядит так, как будто вызывается equals()
.