另一方面,不一定所有的项目都会用到 Netty、Spring 等框架,它们都是框架集成的,只有一小部分功能,方法并不齐全,所以通用的 commons-lang3 工具包对系统迁移、或者对全公司不同系统之间的共用有帮助,避免差异化引起的系统潜在 bug。
isEmpty 和 isBlank 区别?
说了这么多,isEmpty 和 isBlank 到底有啥区别?
1)isEmpty
判断字符串是否为空字符串,只要有一个任意字符(包括空白字符)就不为空。
来看 isEmpty 的方法源码:
public static boolean isEmpty(CharSequence cs) {
return cs == null || cs.length() == 0;
}
看见没,这个方法只判断了是为为 null 或者长度为 0。
意味着,如果用户输入 " " 等空白字符,这个方法就不通过了,结果就是不为空了。
如验证输入以下内容:
| 输入内容 | 是否为空 |
| — | — |
| " " | 否 |
| “” | 是 |
| “Java技术栈” | 否 |
2、isBlank
判断字符串是否为空字符串,全部空白字符也为空。
来看 isBlank 的方法源码:
public static boolean isBlank(CharSequence cs) {
int strLen = length(cs);
if (strLen == 0) {
return true;
} else {
for(int i = 0; i < strLen; ++i) {
if (!Character.isWhitespace(cs.charAt(i))) {
return false;
}
}
return true;
}
}
看见没,第 7 行,只要有一个字符不为空白字符就返回 false,也就是说,如果全部都为空白字符就返回 true,也就是全部空白字符也为空。
如验证输入以下内容:
| 输入内容 | 是否为空 |
| — | — |
| " " | 是 |
| “” | 是 |
| “Java技术栈” | 否 |
这时候,如果用户输入 " " 等空白字符,这个方法也返回空了,这也是大部分业务场景下我们期望出现的结果。
isEmpty 和 isBlank 怎么选?
很明显,我们要判断一个字符串为空,绝大部分情况下 “空白字符” 也要为空的,严谨来说肯定要用 isBlank,虽然 isEmpty 也可以,但如果在最前端的接口不被拦截掉,请求到了后端的服务、数据库,就可能会造成压力,甚至是系统异常,这是完全可以避免的。
但万事也没有绝对,如果你的程序可以接受任意字符,包括 “空白字符”,那就要选择 isEmpty,isBlank 会拦截所有空白字符,就达不到要求。
所以,这两个工具方法你会用了吗?
与之相对应的一般还有 isNotEmpty 和 isNotBlank,这都是对工具类的封装。
好了,今天的分享就到这了,后续栈长还会继续分享一些工作中常用的开发小技巧,关注公众号Java技术栈第一时间推送,在公众号菜单中还能看栈长整理的历史工具类系列文章。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
给大家送一个小福利
附高清脑图,高清知识点讲解教程,以及一些面试真题及答案解析。送给需要的提升技术、准备面试跳槽、自身职业规划迷茫的朋友们。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
准备面试跳槽、自身职业规划迷茫的朋友们。
[外链图片转存中…(img-JdtJk3ZC-1713662099186)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!