许多Java书籍都将该switch语句描述为比该if else语句快。但是我没有找到任何地方为什么切换比if更快。
switch
if else
例 我有一种情况,我必须选择两项中的任何一项。我可以使用
switch (item) { case BREAD: //eat Bread break; default: //leave the restaurant }
要么
if (item == BREAD) { //eat Bread } else { //leave the restaurant }
考虑item和BREAD是一个恒定的int值。
在上面的示例中,哪个操作更快,为什么?
因为有很多情况下,有一些特殊的字节码可以有效地评估switch语句。
如果使用IF语句实现,则将进行检查,跳转到下一个子句,进行检查,跳转到下一个子句等。通过切换,JVM加载要比较的值,并遍历值表以查找匹配项,这在大多数情况下更快。