java中 若有多个判断条件 switch比if效率更高

来源:互联网 发布:硬盘数据彻底删除软件 编辑:程序博客网 时间:2024/05/19 23:12

刚刚也就个人想了解下,在此整理下两者之间的对比及效率更优的原因

两者对比:

1、两者都是条件比较语句,但是IF的比较范围更广,IF能处理所有的boolean类型的结果值,switch只能处理byte、short、int类型的数值比较。

2、两者都是在匹配后执行代码块,IF会按顺序执行直到匹配正确条件,执行完该代码块,后续不加选择跳出,switch则是从匹配代码块处开始往下执行,只有遇到break才跳出,否则执行到最后。


switch比if效率更优原因:

首先,我们都知道switch只能进行整型数值判断,既然是整形那么这里的问题就来了,我们知道,一般的局部变量都存储在堆栈里面,当我们要进行运算的时间读入了寄存器,

那么对于多个数值的比较,如下:

(1)、IF说明:

int a  =10;

if(a==1){}elseif(a==2){}elseif(a==10){}else{} 这段代码,对于a,在每次比较时,都会把a从堆栈中读入寄存器,直到匹配a==10,这样会造成多次读入,而寄存器不会识别这是同一个变量,造成运行过程中的资源浪费。

(2)、switch说明:

int a =10;

switch(a){case 1: break; case 2:break;case 10:break;default:;} 这段代码,中,swith最开始会将整个switch中的比较参数加载到内存,在我们传入参数a的时候,只需要读取一次a变量,然后直接匹配内存中的变量10所在地址,减少了匹配中进行比较的次数,用内存空间代价换区时间效率,同时在加载变量时也减少了资源的浪费。

综上,在使用明确数值比较的条件语句时,从效率跟时间上,switch效率要优于if。

0 1
原创粉丝点击