共同点:
1、两者都可以用于多分支结构;
2、两者都可以进行循环嵌套;
区别:
使用场景:
1、if..else if..else.. 语句:能应用于更多的场合 ,更加灵活,同时也可以表示非常量的多种情况,
2、swtich...case...语句:适合场景:case值为常量的各种情况;
3、swtich...case...语句能表示的情况都可以用if..else if..else.. 语句表示;
性能:
1、当分支较多时,当时用switch的效率比ifelse要高的多,switch以空间换时间,因为switch是随机访问的,确定了选择case值之后直接跳转到那个对应的分支,但是if...else if ...else 是遍历所有的可能值,直到找到符合条件的分支。
2.由汇编代码可知道,switch...case占用较多的代码空间,因为它要生成跳表,特别是当case常量分布范围很大但实际有效值又比较少的情况,switch...case的空间利用率将变得很低。
总结:
1、当只有两种情况时,选用if...else...语句
2、当case对应为固定值-常量,且存在多种情况时,采用swtich...case语句;
3、当存在多种情况,但是为非确定值,存在逻辑判断的情况,采用if...else if ...else 语句;