org.apache.commons.lang3中的isBlank和isEmpty

最近在做代码reviewed的时候,发现项目中对字符串的非空校验使用了org.apache.commons.lang3包,有的地方使用了isBlank,有的地方使用了isEmpty.那么问题来了,使用他们两个有什么区别呢?
话不多说,先上代码,查看运行结果

import org.apache.commons.lang3.StringUtils;

/**
* @author jerry
* @date 2019-12-08
*/
public class IsblannkAndIsEmpty {
 public static void main(String[] args) {
     System.out.println(StringUtils.isBlank(""));
     System.out.println(StringUtils.isBlank("   "));
     System.out.println(StringUtils.isBlank("\n"));
     System.out.println(StringUtils.isEmpty(""));
     System.out.println(StringUtils.isEmpty("   "));
     System.out.println(StringUtils.isEmpty("\n"));
 }
}

运行结果是什么呢?了解源码的同学能脱口而出,下面我们就简单分析一下吧
StringUtils.isBlank

public static boolean isBlank(final CharSequence cs) {
     int strLen;
     if (cs == null || (strLen = cs.length()) == 0) {
         return true;
     }
     for (int i = 0; i < strLen; i++) {
         if (!Character.isWhitespace(cs.charAt(i))) {
             return false;
         }
     }
     return true;
 }

StringUtils.isEmpty

    public static boolean isEmpty(final CharSequence cs) {
     return cs == null || cs.length() == 0;
 }

对比源码可以发现,isBlank比isEmpty校验更严格一些,默认的一些空格或者转义字符都认为是空。
有了上面两段代码逻辑,我们不难就得倒开始测试demo中的答案
true
true
true
true
true
false
false
true
那么上述两个方法,在什么场景下使用呢?
如果对空校验仅限于“”和null,使用两者没有区别
如果对空校验除了""和null,还包含/t/n/r等校验,则适合用isBlank

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值