StringUtils 下面的 isEmpty 和 isBlank 的区别

在实际开发中很多时候要用到这两个方法去判断是否为空,我看我们公司的项目中把这两个方法都用出花来了。可能有的人不小心,导的包都相差十万八千里。有的人甚至还有手写 String 工具类,当然这些可能都是大神。
在这里插入图片描述

我们要导入这个包

import org.apache.commons.lang.StringUtils;

正文

这两个方法都是工 StringUtils 具类里面的方法,都是用来判断字符串是否为空的。像这样类似的 String 工具类存在不同的包中,如 commons-lang3, Spring 等等,这也是造成程序不统一的原因。

我们在使用的时候尽可能的使用lang3 下面的方法,这样不仅可以保证统一性,还可以避免差异化引起的系统潜在 bug

isEmpty :判断字符串是否为空字符串,只要有一个任意字符(包括空白字符)就不为空。

来看 isEmpty 的方法源码:

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

isEmpty通过是非为null和长度进行判断,也就意味着如果用户输入' '空白字符,就返回false。

isBlank

判断字符串是否为空字符串,全部空白字符也为空。

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

        return true;
    } else {
        return true;
    }
}

只要有一个字符不为空白字符就返回 false,也就是说,如果全部都为空白字符就返回 true,也就是全部空白字符也为空。

这时候,如果用户输入 " " 空白字符,这个方法也返回空了,这也是大部分业务场景下我们期望出现的结果。

明白了两个方法的差异那么我们该如何选择呢?其实大部分情况下判断一个字符串为空的话,“空白字符” 也要为空的。严谨来说肯定要用 isBlank。但如果像这种 " " 如果可以再前端过滤掉的话,其实两者都是可以的。

方法都是灵活运用的没有说一定选择那个,根据自己的情况而定就OK。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值