java – 为什么切换比if快

我发现很多书在java说switch语句比if else语句更快。但我没有找到antwhere说为什么开关比if更快。

我有一个情况,我必须选择任何一个项目,两个我可以使用以下方式之一

switch(item){

case BREAD:
     //eat Bread
break;
default:
    //leave the restaurant

}

或使用if语句,如下所示

if(item== BREAD){
//eat Bread
}else{
//leave the restaurant
}

考虑项目和BREAD是常数int值

在上面的例子中,行动更快,为什么?

因为有特殊的字节码,当有很多情况下允许有效的开关语句评估。

如果用IF语句实现,你将有一个检查,跳转到下一个子句,检查,跳转到下一个子句等等。使用switch,JVM加载值来比较和迭代值表,以找到匹配,这在大多数情况下更快。

http://stackoverflow.com/questions/6705955/why-switch-is-faster-than-if

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 为什么切换比if快