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