值判断的性能比较

经常写业务代码,会有对字段值的判断,首先要校验非空,然后做值判断。如果值为null,不校验直接判断会引起异常,如果异常处理不当会引发事故。

所以,这样写会很简便:

new Integer(8).equals(d)

把比对的值放在Integer里,即便变量d为null也不会异常。

但是,这种写法的性能就比较低,下面比较一下:

    public static void main(String[] args) {
        Integer d = null;

        Date start = new Date();
        for (int i = 0; i < 100000; i++) {
            if(new Integer(8).equals(d)){}
        }
        Date end = new Date();
        System.out.println(1 + "-time:" + (end.getTime() - start.getTime()));

        Date start2 = new Date();
        for (int i = 0; i < 100000; i++) {
            if(d != null && d == 8 ){}
        }
        Date end2 = new Date();
        System.out.println(2 + "-time:" + (end2.getTime() - start2.getTime()));
    }

执行结果:

1-time:28
2-time:1

循环10万次,差别还是挺大的。
原因:创建一个对象比较耗时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值