今天工作中碰到了一个else if,我一直以为else if跟if一样都会判断,然而,事情并不是我想的那样。
/**
* @author R.oldmee
* @date 2019/2/19 5:59 PM
*/
public class ElseIfTest {
@org.junit.Test
public void test() {
int a = 30;
if (a > 10 && a < 30) {
System.out.println("1"); // 一旦满足一个条件,后面的全部不执行
} else if (a > 15 && a < 50) {
System.out.println("2"); // 前面的不满足才会执行到这里,一旦这里满足,后面的判断全都不执行
} else if (a > 20 && a < 35) {
System.out.println("3");
} else {
System.out.println("else");
}
}
}
把上面例子中的不等号换成等号else if就跟switch case一样了,但是swtich case比else if效率高,else if是遍历所有的条件知道满足后才会跳出,swtich case编译期间用了一个map把case后面的情况都存在一张表里了,直接查表,然后跳转到那个条件下去执行,所以比else if要快。

本文通过一个具体的代码示例,深入探讨了elseif与switchcase在条件判断上的区别及效率对比。指出switchcase通过编译期间创建的映射表进行快速查找,而elseif则需遍历所有条件直到找到匹配项,因此switchcase在执行效率上更胜一筹。

1952

被折叠的 条评论
为什么被折叠?



