乐趣区

关于java:工作-3-年的同事不懂-isEmpty-和-isBlank-的区别我真是醉了

工具类乱象

最近在查看代码时,发现有的共事喜爱用 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 开发手册(嵩山版)》最新公布,速速下载!

感觉不错,别忘了顺手点赞 + 转发哦!

退出移动版