【日常工作】Java字符串判断优化

31 篇文章 0 订阅
19 篇文章 0 订阅

环境:
MacBook Pro 15
jdk8
IntelliJ IDEA
Spring版本:5.0.7.RELEASE

引子:

看Spring AOP源码,看到5.0.7版本把DefaultAopProxyFactory.class,中的createAopProxy()的判断逻辑,是通过!进行判断,考虑和“==”判断有没有区别?。

问题:

  1. Java里Boolean类型的判断,是否有效率问题?
  2. 字符串判空,如何写效果更好?

解决:

  1. 最优解:使用!。
  2. 最优解:使用(str==null || str.length() == 0)。

TIPS:

1.看下Spring5.0.7版本中DefaultAopProxyFactory类中的createAopProxy()判断逻辑:

    public AopProxy createAopProxy(AdvisedSupport advisedSupport) throws AopConfigException {
        if (!advisedSupport.isOptimize() && !advisedSupport.isProxyTargetClass() && advisedSupport.getProxiedInterfaces().length != 0) {
            return new JdkDynamicAopProxy(advisedSupport);
        } else if (!cglibAvailable) {
            throw new AopConfigException("Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces.");
        } else {
            return DefaultAopProxyFactory.CglibProxyFactory.createCglibProxy(advisedSupport);
        }
    }

2.看下java.lang.String.java中的isEmpty()方法:

 public boolean isEmpty() {
        return value.length == 0;
    }

 public int length() {
        return value.length;
    }

给大家个简单原则:源码咋用就咋用 maff!!!

参考有热心网友测试对比,基本结论和给大家的原则一致。

参考:

关于JAVA字符串非空判断效率问题

Java判断一个字符串str不为空:方法及时间效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值