快捷搜索: 王者荣耀 脱发

Java 中if else、多重if、switch效率对比详细讲解

if语句、if else if语句和switch case语句都属于流程控制语句。

在只需要判断一个条件的时候,自然是使用if语句方便有效;但是当判断条件很多的时候,我们可以使用多个if语句或者if…else if语句或者switch case语句。

对于这三者的选择,下面将做一些具体分析;对于后两者的选择,又将涉及到程序执行效率的问题。

if…else if语句和多个if语句的区别还是很大的,if...else if在任何一个环节满足条件的时候就将会终止判断,只处理一个满足条件的情况;而对于多个if语句,将会对每一个判断条件进行判断,自然而然会导致程序的执行效率降低。在多个判断条件的情况下,使用if…else if语句相对于使用多个if语句而言,可以减少程序的判断次数,提高效率。

在多个判断条件的情况下,不仅可以使用if…else if语句,还可以使用switch case语句。一般情况下,当判断条件较多的情况下,使用switch case语句的效率会高于使用if...else if语句。switch…case与if…else if的根本区别在于,switch…case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的。从而,switch…case不用像if…else if那样遍历条件分支直到命中条件,而只需访问对应 索引号的表项从而到达定位分支的目的。所以从效率上来说由于if…else if的遍历性,代码执行效率是不高的。

总结

if …else⾛逻辑判断时,每条if语句都独⽴需要加载,都要⾛⼀遍判断。这就是耗时的机制问题了。

switch…case 根据⼀个值进⾏多路分⽀,只做⼀次计算,然后将表达式的值与每个case的值⽐较,进⽽选择哪⼀个case语句块。

switch只能处理case为常量的情况,对不是常量的情况是⽆能为⼒的。例如 if (a > 1 && a < 100)属于关系逻辑,是⽆法使⽤switch…case来处理 的。

优先级排序(效率最高的):swachit、if else、多重if

大家根据实际业务来即可,不同语法实现的业务不同,请酌情选择

(抽空在补充文字,大家有需求可以找我) ok,我话说完

我的其他文章

其他薅羊毛网站

自己做的小商城,感兴趣可以相互讨论技术呀!

字节小柜:

经验分享 程序员 微信小程序 职场和发展