相同点
● if和switch都是Java里的分支选择语句,它俩都属于条件分支语句;
● 很多时候,if和swich可以实现的效果类似。
不同点
● switch结构只能处理等值条件判断的情况,且条件必须是整型、枚举变量或字符型变量;
● 多重if选择结构没有switch结构的诸多限制,特别适合某个变量处于某个连续区间时的情况;
● if比switch应用范围更广、更灵活。if可以实现的条件判断,switch不一定能够实现;switch可以实现的条件判断,if肯定可以实现。
● if 在应用中更为常见,但switch的结构更清晰。
● switch使用查找表比对的方式,使得case的条件必须是连续的常量,if语句则没有这些限制。
● 一般情况下,switch比if-else效率更高。因为switch内部使用了Binary Tree算法,不管有多少个case,都只计算一次值,直接跳转,不需逐个比较查询,除非是if-else的第一个条件就为true。
● switch的效率其实与分支数无关。只有当分支比较少时,if语句的效率才比switch高,因为switch有跳转表。当分支较多时,推荐使用switch语句。
所以如果你以后再遇到条件判断,知道该怎么选择实现了吗?在接下来的文章中,壹哥会带领大家继续学习循环结构~