StringUtils的isEmpty()和isBlank(),以及isNotEmpty()和isNotBlank()

以下是自己用到的:

一. 先来看一下源码:

public static boolean isEmpty(String str) {
    return str == null || str.length() == 0;
}
 
public static boolean isNotEmpty(String str) {
    return !isEmpty(str);
}
 
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;
    }
}
 
public static boolean isNotBlank(String str) {
    return !isBlank(str);
}

/*以上可以看出,isEmpty()只有在参数为null 和 长度=0 的时候才返回true. 其余都返回false. 
而isBlank() 则会判断字符串!= null && length != 0 的时候,
如果字符为空字符串,换行符,或者tab键的占位符, 就会返回false, 也就是说, 有这三个的不属于为空.
isNotEmpty() 就是isEmpty取反.isNotBlank()就是isBlank()取反.
*/

//补充:
1. isWhitespace(char ch),用于检查指定字符是否含有空白字符,空白字符包括:空格,换行符,tab键,如果存在则返回true,不存在则返回false.
2. charAt(int index),用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。

二.通过案例理解:

先看看isEmpty和isBlank

简单来说就是,isEmpty是真正的判断为空, 就是不能为null,也不能为'' ,并且长度不能>0, " "像这种有多个空字符串的也不是为空,
isBlank就稍微柔和点,只需要判断不能为null,也不能为'',如果是这种有多个字符串的" ",也会算判断为true.也就是说空字符串在isBlank是不算字符的.

我们再来看非空:

isNotEmpty和isNotBlank都是判断字符串非空:


  大多返回的结果都是false,即不是非空==空,只有字符串为a=” ”(里面有空格时)IsNotEmpty是非空,IsNotBlank是空.有区别,他们实际上,上图中a,b字符串的区别就在于一个有空格,一个没空格,导致isNotEmpty出现变化.

看下其本质你就知道了:

isNotEmpty等价于 a != null && a.length > 0

isNotBlank 等价于 a != null && a.length > 0 && str.trim().length > 0

总结:

     如果我们想判断字符非空里有没有a=”  “的情况,就直接使用Blank,如果需求需要输入为空字符时也要继续操作就用empty.有点绕..

转载自:https://www.cnblogs.com/jap6/p/10641234.html

本人新手,肯定有理解错误的地方,还请大家不吝赐教,多多给予批评指正!
万般感谢!!!

posted @ 2022-03-25 15:15  怎言笑i  阅读(115)  评论(0编辑  收藏  举报