if else vs java中的switch性能

时间:2015-10-10 08:29:14

标签: java if-statement switch-statement

我想知道使用if语句或switch之间是否存在任何效率差异。例如:

if(){
//code
}
else if(){
//code
}
else{
//code
}

我相信即使第一个if语句为真,程序也需要检查所有if语句。

switch(i){

case 1:
//code
break;
case 2:
//code
break;

但是在交换机中,有一个break命令。我接近了吗?如果没有,你能解释它们之间的效率差异吗?

2 个答案:

答案 0 :(得分:4)

Switch性能优于if else,因为在切换时会有一次性评估。一旦它评估了交换机,它就知道需要执行哪种情况,但是在if else的情况下,它必须在最坏的情况下通过所有条件。

列表条件越长,切换性能越好但是对于更短的列表(只有两个条件),它也可能更慢

来自Why switch is faster than if

  

使用switch,JVM会加载要比较和迭代的值   用于查找匹配的值表,在大多数情况下更快

答案 1 :(得分:1)

Switch更快。

想象一下,你在一个有许多路径的十字路口。 使用switch,您将在第一时间转到正确的路径。

使用if,您必须在找到合适的路径之前尝试所有路径。

尽可能使用switch

当然,对于电脑而言,这种差异非常小,甚至没有注意到。但是,是的,你明白了。