我想知道使用if语句或switch之间是否存在任何效率差异。例如:
if(){
//code
}
else if(){
//code
}
else{
//code
}
我相信即使第一个if语句为真,程序也需要检查所有if语句。
switch(i){
case 1:
//code
break;
case 2:
//code
break;
但是在交换机中,有一个break命令。我接近了吗?如果没有,你能解释它们之间的效率差异吗?
答案 0 :(得分:4)
Switch
性能优于if else
,因为在切换时会有一次性评估。一旦它评估了交换机,它就知道需要执行哪种情况,但是在if else
的情况下,它必须在最坏的情况下通过所有条件。
列表条件越长,切换性能越好但是对于更短的列表(只有两个条件),它也可能更慢
来自Why switch is faster than if
使用switch,JVM会加载要比较和迭代的值 用于查找匹配的值表,在大多数情况下更快
答案 1 :(得分:1)
Switch
更快。
想象一下,你在一个有许多路径的十字路口。
使用switch
,您将在第一时间转到正确的路径。
使用if
,您必须在找到合适的路径之前尝试所有路径。
尽可能使用switch
。
当然,对于电脑而言,这种差异非常小,甚至没有注意到。但是,是的,你明白了。