应用层面:
IF 语句适用范围比较广,只要是 boolean 表达式都可以用 if 判断;
而 SWITCH只能对基本类型进行数值比较。两者的可比性就仅限在两个基本类型比较的范围内。
寄存器读取:
eg_if:如果对(int a) a 来判断:
if(a==1){
//do something
}else if(a==2){
//do something
} ......
这样的话,a在寄存器中就被读取了多次,每一次判断都会读取一次。显然,我们比较的是同一个对象a,读取多次没有必要。
eg_switch:如果对(int a) a 来判断:
switch (a) {
case 0:
//do something
break;
case 1:
//do something
break;
}
寄存器对a只读取一次,每个case都和读取的a做比较。
运行效率:
(未进行本地测试,网络答案)
Switch语句击中第三个选项的时间跟if/else if语句击中第三个选项的时间相同。
击中第一,第二选项的速度if语句快,击中第四以及第四之后的选项的速度switch语句快。
5个选项(包括default)的情况下,switch和if/else if相同。低于5个选项if快,高于5给选项switch快。