在我们日常开发中,判空应该是最常用的一个操作了。因此项目中总是少不了依赖commons-lang3包。这个包为我们提供了两个判空的方法,分别是StringUtils.isEmpty(CharSequence cs)和StringUtils.isBlank(CharSequence cs)。我们分别来看看这两个方法有什么区别。

一、StringUtils.isEmpty

isEmpty的源码如下:

public static boolean isEmpty(CharSequence cs) {

return cs == null || cs.length() == 0;

}

这个方法判断的是字符串是否为null或者其长度是否为零。

测试效果

public class BlankAndEmpty {

public static void main(String[] args) {

System.out.println(StringUtils.isEmpty(null)); // true

System.out.println(StringUtils.isEmpty("")); //true

System.out.println(StringUtils.isEmpty(" ")); //false

System.out.println(StringUtils.isEmpty("\t")); //false

System.out.println(StringUtils.isEmpty("Java旅途")); //false

}

}

二、StringUtils.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;

}

}

length(cs)的方法如下

public static int length(CharSequence cs) {

return cs == null ? 0 : cs.length();

}

这个方法除了判断字符串是否为null和长度是否为零,还判断了是否为空格,如果是空格也返回true。

测试效果

public class BlankAndEmpty {

public static void main(String[] args) {

System.out.println(StringUtils.isBlank(null)); //true

System.out.println(StringUtils.isBlank("")); //true

System.out.println(StringUtils.isBlank(" ")); //true

System.out.println(StringUtils.isBlank("\t")); //true

System.out.println(StringUtils.isBlank("Java旅途")); //false

}

}

三、总结

isEmpty:如果是null或者“”则返回true。

isBlank:如果是null或者“”或者空格或者制表符则返回true。isBlank判空更加准确。

四、扩展

在实际开发中,除了isBlank判空的几种情况之外,其实“null”字符串我们也会当作空字符串处理。

我们需要判断几个字段同时不能为空,如果还用isBlank就显得有点累赘了。我们可以使用String的可变参数提供如下工具类。

public class StringTool {

public static boolean isNullStr(String... args) {

boolean falg = false;

for (String arg : args) {

if (StringUtils.isBlank(arg) || arg.equals("null")) {

falg = true;

return falg;

}

}

return falg;

}

}

这个工具类的优点很明显,一方面判断了字符串“null”,另一方面对参数个数无限制,只要有一个参数是空则返回true。

isblank java_判空我推荐StringUtils.isBlank相关推荐

  1. 判空我推荐StringUtils.isBlank

    在我们日常开发中,判空应该是最常用的一个操作了.因此项目中总是少不了依赖commons-lang3包.这个包为我们提供了两个判空的方法,分别是StringUtils.isEmpty(CharSeque ...

  2. StringUtils 系列之 StringUtils.isBlank() 和 StringUtils.isNotBlank() 的区别、CollectionUtils.isEmpty()

    一.StringUtils 系列之 StringUtils.isBlank() 和 StringUtils.isNotBlank() 的区别 // StringUtils.isEmpty(); // ...

  3. StringUtils isEmpty 和 isBlank 的区别 CollectionUtils判空的方法

    本文讨论的 StringUtils 属于package org.apache.commons.lang; 文章目录 字符串判空检查 "" 和 null 的区别 isEmpty(St ...

  4. java script isblank_java判断一个字符串是否为空,isEmpty和isBlank的区别

    转载于:https://blog.csdn.net/liusa825983081/article/details/78246792 实际应用中,经常会用到判断字符串是否为空的逻辑 比较简单的就是用 S ...

  5. java判断一个字符串是否为空,isEmpty和isBlank的区别

    实际应用中,经常会用到判断字符串是否为空的逻辑 比较简单的就是用 Str != null && Str.length() >0 来判断 其实很多java工具集都是有包装好的接口可 ...

  6. java的StringUtils.isBlank和StringUtils.isEmpty方法区别(org.apache.commons.lang3.StringUtils)

    前言 估计很多朋友跟我一样,平时也不会特别去注意究竟用isBlank还是isEmpty去判断空字符串,但是大部分场景优先使用isBlank就对了. isEmpty是否为空,只有当==null或者==& ...

  7. StringUtils 工具类常用方法汇总 1(判空、转换、移除、替换、反转)

    Apache commons lang3 包下的 StringUtils 工具类中封装了一些字符串操作的方法,非常实用,使用起来也非常方便.最近自己也经常在项目中使用到了里面的一些方法,在这里将常用的 ...

  8. StringUtils.isEmpty和StringUtils.isBlank的区别

    两个方法都是判断字符是否为空的.前者是要求没有任何字符,即str==null 或 str.length()==0:后者要求是空白字符,即无意义字符.其实isBlank判断的空字符是包括了isEmpty ...

  9. spring字符串判空_字符串工具类StringUtils实现字符串是否中文、字符串分割/判空/替换/查找、是否包含乱码及字符串数组合并等常规操作...

    一.前言 关于字符串工具类StringUtils实现字符串是否包含isChinese中文.是否包含isMessyCode乱码.常规数据类型转换.替换/删除/判空.两字符串数组mergeStringAr ...

最新文章

  1. 第七篇 JVM核心机制之JVM运行和类加载全过程(二)
  2. beta阶段140字评论
  3. java编写科赫曲线_分形——科赫曲线
  4. 高斯背景建模 matlab,高斯背景建模整理 – 要饭的
  5. 这是我们的第一篇博客----偕行软件
  6. 真实AIS数据,解码,可视化
  7. 利用Python求阶乘
  8. Struts2学习(二):第一个Action
  9. vue-router 懒加载优化
  10. python清理日志脚本_Python日志:如果在程序运行时删除了日志文件,则创建新的日志文件(RotatingFileHandler)...
  11. poj3557 Map Generator
  12. win10安装IIS及操作使用
  13. 成功解决raise KeyError(f“None of [{key}] are in the [{axis_name}]“)KeyError: “None of [Index([‘age.in.y
  14. 嵌入式工程师面试题集-MCU_STM32
  15. Notepad++ 替代品开源了!
  16. linux 内存取证_内存取证工具volatility
  17. python批量生成word_实例5:用Python批量生成word版邀请函
  18. pytorch1.13启用caffe2
  19. 面向对象的PHP编程
  20. nginx服务器的文档根目录,nginx更改根目录

热门文章

  1. windows10上Nginx的配置
  2. PHP设计模式之装饰者模式:钢铁侠的战衣逐步升级
  3. 斗牛怎么玩法算法_干货:可转债怎么打新百分之百中签?详细讲解抢权配售,值得收藏...
  4. ZJOI 2017 DAY2 NGU
  5. 关于Word 2007 文档结构图字体太小的问题
  6. Python界面编程第十三课:Pyside2 (Qt For Python)GridLayout网格布局
  7. 面向对象分析与设计示例:骰子游戏
  8. [354]python os.path模块
  9. 微信小程序js发送模板消息
  10. 20050821:搬家了