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
本人新手,肯定有理解错误的地方,还请大家不吝赐教,多多给予批评指正!
万般感谢!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~