java else if 为什么比 switch 效率低?最好可以解释下原理
关注:116答案:2mip版
解决时间 -02-02 06:21
提问者安分守己的小青春
-02-01 07:34
java else if 为什么比 switch 效率低?最好可以解释下原理
最佳答案
二级知识专家萌逗
-02-01 08:40
首先要看一个问题,if 语句适用范围比较广,只要是 boolean 表达式都可以用 if 判断;而 switch 只能对基本类型进行数值比较。两者的可比性就仅限在两个基本类型比较的范围内。
说到基本类型的数值比较,那当然要有两个数。然后重点来了——
if 语句每一句都是独立的,看下面的语句:
if (a == 1) ...
else if (a == 2) ...
这样 a 要被读入寄存器两次,1 和 2 分别被读入寄存器一次。于是你是否发现其实 a 读两次是有点多余的,在你全部比较完之前只需要一次读入寄存器就行了,其余都是额外开销。但是 if 语句必须每次都把里面的两个数从内存拿出来读到寄存器,它不知道你其实比较的是同一个 a。
于是 switch case 就出来了,把上面的改成 switch case 版本:
switch (a) {
case 0:
break;
case 1:
}
因为特定的规则,他一开始就知道你要比 a,于是 a 一次性读取,相比 if 节约了很多开销。
全部回答
1楼花落浅殇
-02-01 09:37
package com.cards.checkcode;
public class two {
public static void main(string[] args) {
int score =0;
switch(getint(score)){
case 1:
system.out.println("不及格");
break;
case 2:
system.out.println("及格");
break;
case 3:
system.out.println("中");
break;
case 4:
system.out.println("良");
break;
case 5:
system.out.println("优");
break;
default:
system.out.println("错误");
break;
}
}
public static int getint(int score){
if((score>=0)&&(score<=59))
return 1;
else if((score>=60)&&(score<=69))
return 2;
else if((score>=70)&&(score<=79))
return 3;
else if((score>=80)&&(score<=89))
return 4;
else if((score>=90)&&(score<=100))
return 5;
else
return 6;
}
}
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
→点此我要举报以上信息!←
推荐资讯
大家都在看