switch...case...和if...else...区别

来源:互联网 发布:淘宝买的邮票是真的吗 编辑:程序博客网 时间:2024/05/05 04:26

switch 和 if 都是用来处理分支语句的,那么使用的时候,考虑到代码效率问题,就必须先来了解他们有什么区别。

先来看看这两个语句的使用格式:

  • if…else…
    if (表达式1)    {        语句1;    }    else if (表达式2)    {        语句2;    }    else if (表达式3)    {        语句3;    }    else if (表达式4)    {        语句4;    }    ...    else    {        语句n+1;    }
  • switch…case…
    switch (表达式)    {    case 值1:语句1;break;    case 值2:语句2;break;    case 值3:语句3;break;    case 值4:语句4;break;    case 值5:语句5;break;    ...    default:语句n+1;break;    }

if语句每执行一次都要先判断条件表达式是true还是false,为true时执行相应语句,若为false则继续判断下一个表达式,直到最后一个else结束。线性执行。
switch语句只需在入口时计算表达式的值,然后查找跳转表,执行对应语句,否则default。类似二叉树。

区别一:

switch…case…只能用于case值为常量的分支结构,而if…else…更加灵活。

区别二:

if判断条件为逻辑表达式,可以是布尔类型的合法表达式、可以是常量、枚举等。而switch 通常处理算术表达式,或字符。

区别三:

switch 进行一次条件判断后直接执行到程序的条件语句。而if…else 有几种条件,就得判断多少次。

区别四:

相比if语句,switch语句是以空间换时间的分支结构。因为它要生成跳转表,所以占用较多的代码空间。当case常量分布范围很大但实际有效值又比较少的情况,switch…case的空间利用率将变得很低。

区别五

分支较多时,使用switch的效率高于if,除非第一个if条件就为真。

其次,当分支较多时,使用if…else…代码可读性不如switch…case…高。

0 0
原创粉丝点击