当前位置: 首页 > 科技观察

工作3年的同事不明白isEmpty和isBlank的区别,真是醉了,.

时间:2023-03-20 01:26:20 科技观察

工具类混乱最近查代码的时候发现有的同事喜欢用isEmpty,有的同事喜欢用isBlank,而且大家用的不是??同一个工具包,甚至自己手写String工具,天啊,我真的醉了……你们公司有这样的情况吗?别说不,我真的不信!说到这里,最近有个工作了3年的同事问我isEmpty和isBlank的区别。嗯,今天就来说说吧。首先,这两个方法使用了工具类StringUtils中的方法,用于判断字符串是否为空,而这个工具类无处不在,如下图,栈长进入StringUtils,还有很多类似的弹出来的工具类:类似的String工具类存在于不同的包中,比如Netty、Apachecommons-lang3、Spring等,这也是程序员不统一工具类的原因,虽然大部分框架都会被集成自己,但最常用和最完整的方法属于Apachecommons-lang3工具包。commons-lang3是Apache下的开源通用Java工具包。除了常用的字符串工具外,还包括数字工具、时间工具、反射工具、线程工具等等……更多内容请参考《排名前 16 的 Java 工具类》这篇文章。为什么推荐通用的commons-lang3?一方面,commons-lang3是一个功能齐全、功能强大的专业工具包。另一方面,并??不是所有项目都会使用Netty、Spring等框架。都是框架集成的,只有一小部分功能和方法不完整。因此,通用的commons-lang3工具包对于系统迁移,或者对于整个公司不同系统之间的共享,有助于避免差异化带来的潜在系统bug。isEmpty和isBlank有什么区别?说了这么多,isEmpty和isBlank之间有什么区别?1)isEmpty判断字符串是否为空字符串,只要有字符(包括空白字符)就不为空。查看isEmpty方法的源码:publicstaticbooleanisEmpty(CharSequencecs){returncs==null||cs.length()==0;}看,这个方法只是判断是否为null或者长度是否为0,意思是如果用户输入了""等空白字符,这个方法不会通过,结果会不要空着。例如验证以下内容的输入:输入的内容是否为空?”“否”“是《Java技术栈》否2.isBlank判断字符串是否为空字符串,所有空白字符也为空。看isBlank方法的源码:publicstaticbooleanisBlank(CharSequencecs){intstrLen=length(cs);if(strLen==0){returntrue;}else{for(inti=0;i