if else vs java中的switch性能

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

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

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

 switch(i){ case 1: //code break; case 2: //code break; 

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

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

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

从何为开关比如果更快

使用switch,JVM加载要比较的值并遍历值表以查找匹配,这在大多数情况下更快

Switch速度更快。

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

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

尽可能使用switch

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

我认为代码很清楚。 对于if,您必须逐个检查每个案例(在最坏的情况下,最后一次返回会返回结果)。 有了switch,有点像特殊的字节码检查并跳转到正确的case返回。 所以开关比if语句快一点。 但是,我认为我们需要关注我们实施的方式,以便于阅读。 在一些简单的例子中,if也是编写代码的选择。