我在一篇关于 Switch vs If 的文章中读到,如果我们使用String作为switch参数,编译器将不会生成跳转表。这是正确的,如果是,请求解释原因?
由于
PS
我对了解java有兴趣。我读到的关于这个的部分来自Stackoverflow中的答案。所以这是链接stackoverflow.com/a/395965/1043937
它说的是关于c#,但由于java自1.7以来也具有相同的功能,有人可以解释一下。
答案 0 :(得分:3)
C中的switch语句不能接受字符串作为参数。
java 1.7中的字符串切换语句可用。它们不是之前,因为这个块是从c特征建模的。 java使用或不使用跳转表的事实取决于实现,结果也取决于值。
编辑:有关实施的详细信息,请参阅the link provided by Jon。
答案 1 :(得分:0)
在java 1.7之前,你不能使用string作为switch参数。这是java 1.7中的一个功能,您也可以使用String作为切换参数。
答案 2 :(得分:0)
Switch语句可以使用基本类型或枚举类型。 Java 7引入了另一种我们可以在Switch语句中使用的类型:String类型。
public void process(Trade t){
String status = t.getStatus();
switch (status) {
case NEW:
newTrade(t);
break;
case EXECUTE:
executeTrade(t);
break;
case PENDING:
pendingTrade(t);
break;
default:
break;
}
}