switch (表达式){ 
case 值1 : 语句1 break; 
case 值2 : 语句2 break; 
... 
default : 语句n break; 
}
if(boolean){

}else if(boolean){

}else if(boolean){

}else{

}

switch有点以空间换时间的意思,而事实上也的确如此。

1.当分支较多时,当时用switch的效率是很高的。因为switch是随机访问的,就是确定了选择值之后直接跳转到那个特定的分支,但是if。。else是遍历所以得可能值,知道找到符合条件的分支。如此看来,switch的效率确实比ifelse要高的多。

2.由汇编代码可知道,switch...case占用较多的代码空间,因为它要生成跳表,特别是当case常量分布范围很大但实际有效值又比较少的情况,switch...case的空间利用率将变得很低。

3.switch...case只能处理case为常量的情况,对非常量的情况是无能为力的。例如 if (a > 1 && a < 100),是无法使用switch...case来处理的。所以,switch只能是在常量选择分支时比ifelse效率高,但是ifelse能应用于更多的场合,ifelse比较灵活。

4.在已知某几种分支出现概率较高的情况下,使用if else,将高概率分支前几位,由于if else是遍历所有值,所以使用这种方式的效率要比switch case高

5.分支出现概率相同或未知的情况下,分支数小于5 if else的效率比switch case高,反之分支数大于5,switch case效率比if else高

当前位置: 首页 > 技术研究 > Java > switch case和if else效率区别

switch case和if else效率区别

发布于:2021-2-9 Java 0条评论 293 views
switch (表达式){ 
case 值1 : 语句1 break; 
case 值2 : 语句2 break; 
... 
default : 语句n break; 
}
if(boolean){

}else if(boolean){

}else if(boolean){

}else{

}

switch有点以空间换时间的意思,而事实上也的确如此。

1.当分支较多时,当时用switch的效率是很高的。因为switch是随机访问的,就是确定了选择值之后直接跳转到那个特定的分支,但是if。。else是遍历所以得可能值,知道找到符合条件的分支。如此看来,switch的效率确实比ifelse要高的多。

2.由汇编代码可知道,switch...case占用较多的代码空间,因为它要生成跳表,特别是当case常量分布范围很大但实际有效值又比较少的情况,switch...case的空间利用率将变得很低。

3.switch...case只能处理case为常量的情况,对非常量的情况是无能为力的。例如 if (a > 1 && a < 100),是无法使用switch...case来处理的。所以,switch只能是在常量选择分支时比ifelse效率高,但是ifelse能应用于更多的场合,ifelse比较灵活。

4.在已知某几种分支出现概率较高的情况下,使用if else,将高概率分支前几位,由于if else是遍历所有值,所以使用这种方式的效率要比switch case高

5.分支出现概率相同或未知的情况下,分支数小于5 if else的效率比switch case高,反之分支数大于5,switch case效率比if else高


发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据