以前只知道使用没注意具体区别,特此整理总结下。
我们常说的字符串为空,其实就是一个没有字符的空数组。比如:

String a = "";

a 就可以称为是一个空字符串。由于 String 在 Java 中底层是通过 char 数组去存储字符串的,所以空字符串对应的 char 数组表现形式为

private final char value[] = new char[0];


但实际工作中,我们需要对字符串进行一些校验,比如:是否为 null,是否为空,是否去掉空格、换行符、制表符等也不为空。比较简单的就是用 Str != null && Str.length() >0 来判断。

一、框架的工具类校验

我们一般都是通过一些框架的工具类去做这些判断,比如:apache 的 commons jar 包。比如 StringUtils.isEmpty(String str) 和 StringUtils.isBlank(String str)
isEmptyisBlank的区别在于

isEmpty仅仅是判断空和长度为0字符串。

isBlank判断的是空,长度为0,空白字符(包括空格,制表符\t,换行符\n,换页符\f,回车\r)组成的字符串。

主要区别代码验证
StringUtils.isEmpty(" “) = false
StringUitls.isBlank(” ") = true

StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false
StringUtils.isEmpty("aaa") = false
StringUtils.isEmpty("\t \n \r \f") = falseStringUtils.isBlank(null) = true
StringUtils.isBlank("") = true
StringUitls.isBlank(" ") = true
StringUtils.isEmpty("aaa") = false
StringUtils.isEmpty("\t \n \r \f") = true


顺便在引包的时候,会出现org.apache.commons.lang和org.apache.commons.lang3两种选择,lang3是Apache Commons 团队发布的工具包,要求jdk版本在1.5以上,相对于lang来说完全支持java5的特性,废除了一些旧的API。

所以引用lang3就好啦。

二、注解@NotNull,@NotBlank,@Valid自动判定空值

@NotNull:不能为null,但可以为empty
@NotEmpty:不能为null,而且长度必须大于0
@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0

举例如下

public class Order {@NotNull(message = "用户ID不能为空")private Long userID;@NotNull(message = "收货人地址id不能为空")private Long addressID;@NotBlank(message = "备注不为空")private String comment;}

参考文章
https://blog.csdn.net/liusa825983081/article/details/78246792
https://www.jb51.net/article/184134.html
https://blog.csdn.net/qq_39964694/article/details/81183701
http://www.360doc.com/content/18/0829/14/10072361_782131739.shtml

字符串是否为空(isEmpty和isBlank的区别)相关推荐

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

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

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

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

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

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

  4. isEmpty和isBlank的区别

    isEmpty和isBlank的区别在于 isEmpty仅仅是判断空和长度为0字符串 isBlank判断的是空,长度为0,空白字符(包括空格,制表符\t,换行符\n,换页符\f,回车\r)组成的字符串 ...

  5. 工作 3 年的同事不懂 isEmpty 和 isBlank 的区别,我真是醉了。

    新来的同事,干了3年java,代码中 isEmpty 和 isBlank 的区别 都不知道,一顿瞎用.也许你两个都不知道,也许你除了isEmpty/isNotEmpty/isNotBlank/isBl ...

  6. 集合判断是否为空isEmpty()与==null的区别

    前言 Java中的空指针异常确实是令人头疼的问题,今天抽空详细梳理下关于集合判断是否为空isEmpty()与==null的区别,尽量避免触发空指针异常. 集合之List isEmpty() 测试代码如 ...

  7. StringUtils类中 isEmpty() 与 isBlank()的区别

    org.apache.commons.lang.StringUtils类提供了String的常用操作,最为常用的判空有如下两种isEmpty(String str)和isBlank(String st ...

  8. StringUtils 中 isEmpty 和 isBlank 的区别

    在项目的工作学习中经常用到了 apache  commons 中的 StringUtils 的 isBlank 和 isEmpty 来判断字符串是否为空,这个方法都是判断字符串是否为空做判断的,以至于 ...

  9. isEmpty()和isBlank()的区别

    StringUtils工具类中的isEmpty方法和isBlank方法的区别: 一.isEmpty()和isBlank()的相同之处: 1. str.length()==0 class StringU ...

最新文章

  1. 【开放书】《命令行数据科学指南(第二版)》
  2. PHP IPC函数介绍---共享内存
  3. 基于STC8G1K08信标信号板设计
  4. HwBinder驱动篇-Android10.0 HwBinder通信原理(十)
  5. kubernetes dashboard backend源码剖析
  6. 该页面仅以HTML格式保存_第七节:框架搭建之页面静态化的剖析
  7. 求二叉树中以x为根的子树的深度_还在玩耍的你,该总结啦!(本周小结之二叉树)...
  8. 泛型类 0104 c#
  9. python dataframe去除重复项_python - Pandas DataFrame处理查找DataFrame中的重复项 - 堆栈内存溢出...
  10. kvm学习---制作win7虚拟机镜像,并配置网络
  11. Android Lint 代码检查工具的使用
  12. Linux网卡状态查看
  13. “鬼影”浅析 - 反病毒,信息安全,网络安全,反木马,病毒资讯平台,安全解决方案,电脑使用技巧,杀毒软件交流,anti-virus,民间反病毒联盟
  14. 《QTreeView表项实现排序的2种方式》:系列教程之九
  15. matlab现值与终值函数_Matlab金融工具箱中的主要功能函数
  16. mro列表_类的继承mro
  17. (技术类)中标麒麟linux终端命令操作之小白不知道的点(1)
  18. java二维码生成工具,可直接用于生产
  19. 基于Android studio有声听书系统 java音乐播放器系统
  20. linux下进入recovery mode 的单用户模式

热门文章

  1. C-Kermit在linux 下的安装和使用
  2. Matlab求解微分方程组
  3. 豆瓣网技术架构发展历程
  4. python处理通达信数据,加入BOLL通道数据,量化交易
  5. 在Windows程序中打开控制台的程序
  6. Unity3D实战【七】Cinemachine Post Processing 摄像机跟踪和后处理
  7. import nose ImportError: No module named 'nose'
  8. Python Environment Interpreter
  9. Revit建模中如何快速画好幕墙?
  10. 嵌入式开发中,嵌入式硬件和软件有什么区别?