900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java f else_java else if 为什么比 switch 效率低?最好可以解释下原理

java f else_java else if 为什么比 switch 效率低?最好可以解释下原理

时间:2023-09-06 14:07:29

相关推荐

java f else_java else if 为什么比 switch 效率低?最好可以解释下原理

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;

}

}

我要举报

如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

→点此我要举报以上信息!←

推荐资讯

大家都在看

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。