commons-lang3 包下的 isEmpty 和 isBlank 的区别,

2019.11.25 今天是离职后面试的第二家公司, 面试过程中问到了 你平时是怎么判断字符串不为空的, 我便回答了使用 Commons-lang3 包下的 StringUtils 类 的isNotEmpty 或者 isNotBlank 来处理,并且只知道他们的区别是 :

对 " " 空格字符串处理的时候, isNotEmpty 返回 false而 isNotBlank 返回的是 true. 其他的就不知道了. 没有回答的理所其然呀.

虽然这两个函数 在平时开发中经常使用但是也一直没有去看过这两个函数的区别.今天就来仔细看一看源码吧.

PS:
 isNotEmpty 的源码中的实现 是 return ! isEmpty
 isNotBlank 的源码中的实现 是 return ! isBlank
 所以我们看一下 isEmpty 和 isBlank 的源码即可.
 commons-lang3 的版本是 3.4

isEmpty

isEmpty 是 直接判断 入参的字符串 是否为 null 或者字符串的长度是否为0.
那么 " " 这样带空格的字符串的长度 不为 0 ,返回true , 则isNotEmpty 返回 false .

public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
}

isBlank

isBlank 先做了一遍和 isEmpty同样的判断操作, 然后又从左到右依次判断每个字符做 空格校验.

Character.isWhitespace 函数 , 就是对字符进行校验是否为空格的,
这里在字符串 str 中,只要有一个字符不为空格,那么 他就不是空字符串
如果所有的字符都是空格,那么 他就被认定为一个空字符串了.

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值