else if的运作流程

19 篇文章 0 订阅
1 篇文章 0 订阅

 

今天工作中碰到了一个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要快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值