一尘不染

Java 为什么切换比没有更快

java

许多Java书籍都将该switch语句描述为比该if else语句快。但是我没有找到任何地方为什么切换比if更快。


我有一种情况,我必须选择两项中的任何一项。我可以使用

switch (item) {
    case BREAD:
        //eat Bread
        break;
    default:
        //leave the restaurant
}

要么

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

考虑item和BREAD是一个恒定的int值。

在上面的示例中,哪个操作更快,为什么?


阅读 299

收藏
2020-03-22

共1个答案

一尘不染

因为有很多情况下,有一些特殊的字节码可以有效地评估switch语句。

如果使用IF语句实现,则将进行检查,跳转到下一个子句,进行检查,跳转到下一个子句等。通过切换,JVM加载要比较的值,并遍历值表以查找匹配项,这在大多数情况下更快。

2020-03-22