共计 1977 个字符,预计需要花费 5 分钟才能阅读完成。
工具类乱象
最近在查看代码时,发现有的共事喜爱用 isEmpty,有的共事喜爱用 isBlank,而且大家用的还不是同一个工具包中的,甚至还有本人手写 String 工具类的,天呀,我真是醉了……
你们公司是否也有这样的状况呢?别说没有,我真不信!
说到这个事件,最近还有个工作 3 年的共事问我 isEmpty 和 isBlank 的区别,好吧,明天就开展讲下。
首先,这两个办法用的都是工具类 StringUtils 外面的办法,都是用来判断字符串是否为空的,而这个工具类到处都是,如下图所示,栈长输出 StringUtil,很多相似的工具类就蹦出来了:
像这样相似的 String 工具类存在不同的包中,有 Netty, Apache commons-lang3, Spring 等等,这也是造成程序员不对立工具类的起因,尽管大部分框架都会本人集成,但用的最多的,办法最全的还要属 Apache commons-lang3 工具包。
commons-lang3 是 Apache 上面的一个开源的通用 Java 工具包,除了罕用的字符串工具类,还蕴含数字工具类、工夫工具类、反射工具类、线程工具类,等等……
更多请参考《排名前 16 的 Java 工具类》这篇文章。
为什么举荐通用的 commons-lang3?
一方面,commons-lang3 是业余的工具包,性能十分齐全、弱小。
另一方面,不肯定所有的我的项目都会用到 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 技术栈第一工夫推送,在公众号菜单中还能看栈长整顿的历史工具类系列文章。
如果有帮忙,点个在看激励一下哦!也欢送分享转发给更多有须要的敌人~
版权申明:本文系公众号 “Java 技术栈 ” 原创,原创实属不易,转载、援用本文内容请注明出处,禁止剽窃、洗稿,请自重,尊重大家的劳动成果和知识产权,剽窃必究。
近期热文举荐:
1.1,000+ 道 Java 面试题及答案整顿 (2021 最新版)
2. 终于靠开源我的项目弄到 IntelliJ IDEA 激活码了,真香!
3. 阿里 Mock 工具正式开源,干掉市面上所有 Mock 工具!
4.Spring Cloud 2020.0.0 正式公布,全新颠覆性版本!
5.《Java 开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞 + 转发哦!