赞
踩
单从JVM的执行效率上讲的话,switch的执行效率要高于if语句:
原因在于:switch语句在运行时,首先会生成一个“跳转表”来指示实际的case分支的地址,而这个“跳转表”的索引号与swtich中的case值是相等的,这样的话,switch就不用像if else那样,遍历所有的条件,直至找到正确条件,而仅仅只需要访问对应索引号的表项就可以到达定位分支的目的。
简单的说,switch会生成一个数据统计表,将case后面的值全部统计起来,匹配时先拿表中的数据进行比较,如果有则直接跳转到相应case语句;如果没有,则直接跳转到default语句。
那if else呢?其实刚刚我们已经简单的说了其工作流程,这里再次说明一下:
if else语句需要一条一条的去进行取值范围的判断,直到找到正确的选项位置,这样的话势必会浪费大量的时间。
所以,单从其运行的效率来看,switch语句要更胜一筹。
总结
1.switch语句由于它独特的case值判断方式,使其执行效率更高,而if else语句呢,则由于判断机制,导致效率稍慢。
2.到底使用哪一个选择语句,和当前的代码环境有关,如果是范围取值,则使用if else语句更为快捷;如果是确定取值,则使用switch更是一个不错的选择。
所有好的程序都是经过不断思考,不断琢磨,付出努力,最终得以完成的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。