文章目录

  • 前言
  • isEmpty()
  • isBlank()

前言

字符串为空,其实就是一个没有字符的空数组。比如:

String a = "";

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

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

但实际工作中,我们需要对字符串进行一些校验,比如:是否为 null,是否为空,是否去掉空格、换行符、制表符等也不为空。我们一般都是通过一些框架的工具类去做这些判断,比如:apache 的 commons jar 包。下面就讲述一下常见的两个字符串校验方法以及它们的区别。

PS:最近在写项目的过程中,发现很多地方要做判空操作的,然后有时候可能调用链比较长,如果用 if else 来判空的话,光判空代码就会比较多,这样对后期维护性不好,而且我们自己判空可能会没有考虑某个场景,这样就会导致可能空指针。我现在强烈推荐大家使用第三方 jar 的工具类去做判空。
比如:

  • 从 Map 中取一个 key 的值,可以用 MapUtils 这个类;
  • 对字符串判空使用 StringUtils 这个类;
  • 对集合进行判空使用 CollectionUtils 等等。

这些类都可以通过引入 apache 的 commons 包系列使用。

isEmpty()

public static boolean isEmpty(String str) {        return str == null || str.length() == 0;
}

isBlank()

public static boolean isBlank(String str) {int strLen;if (str != null && (strLen = str.length()) != 0) {for(int i = 0; i < strLen; ++i) {// 判断字符是否为空格、制表符、tabif (!Character.isWhitespace(str.charAt(i))) {    return false;}}return true;} else {return true;}}

结论
通过以上代码对比我们可以看出:

  1. isEmpty 没有忽略空格参数,是以是否为空和是否存在为判断依据。

  2. isBlank 是在 isEmpty 的基础上进行了为空(字符串都为空格、制表符、tab 的情况)的判断。(一般更为常用)

大家可以看下面的例子去体会一下。

StringUtils.isEmpty("yyy") = false
StringUtils.isEmpty("") = true
StringUtils.isEmpty("   ") = falseStringUtils.isBlank("yyy") = false
StringUtils.isBlank("") = true
StringUtils.isBlank("   ") = true

StringUtils里的isEmpty方法和isBlank方法的区别相关推荐

  1. StringUtils里面的 isEmpty方法和isBlank方法的区别

    写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感兴 ...

  2. 关于StringUtils里isEmpty方法和isBlank方法

    一.前言 StringUtils 的操作对象是 Java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,输入的 String参数 为 null 也不会抛出 ...

  3. Java并发编程—schedule方法和scheduleAtFixedRate方法的区别

    原文作者:一叶丿清风 原文地址:schedule方法和scheduleAtFixedRate方法的区别 schedule方法和scheduleAtFixedRate方法都可以实现任务的延时和不延时执行 ...

  4. get方法和post方法的区别及常用的请求方式

    get方法和post方法的区别: get方法是从服务器上获取资源:post方法是向服务器传送数据: get方法参数是通过url传递的,post方法是放在request body中:GET比POST更不 ...

  5. 请简述一下线程的sleep()方法和yield()方法的区别?

    请简述一下线程的sleep()方法和yield()方法的区别? ①sleep()方法给其他线程机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会. yield()方法只会给相同优先级或更高优 ...

  6. flush方法和close方法的区别

    package com.learn.Demo05Writer;import java.io.FileWriter; import java.io.IOException;/*flush方法和close ...

  7. ExtJS中listener方法和handler方法的区别

    listener方法和handler方法的区别在文档中的说明的太玄乎了,看不懂 listeners监听能够对一个click Event事件添加任意多个的事件响应处理函数 而handler处理只能够通过 ...

  8. python predict_对Keras中predict()方法和predict_classes()方法的区别说明

    1 predict()方法 当使用predict()方法进行预测时,返回值是数值,表示样本属于每一个类别的概率,我们可以使用numpy.argmax()方法找到样本以最大概率所属的类别作为样本的预测标 ...

  9. java——Scanner中nextLine()方法和next()方法的区别

    遇到一个有意思的东西,在整理字符串这块知识的时候,发现我在用Scanner函数时,在字符串中加入空格,结果空格后面的东西没有输出来(/尴尬),不多说直接上代码: import java.util.Sc ...

最新文章

  1. css设置鼠标指针光标样式
  2. Angularjs controller之间的通信
  3. xps13 linux 硬盘分区,在xps13上安装ubuntu16.04教程
  4. SpringBoot 日志配置
  5. 【CodeForces】741 D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(dsu on tree)
  6. django/python日志logging 的配置以及处理
  7. 快讯:百度正式宣布CTO李一男离职
  8. php接口前端,php 接口与前端数据交互实现示例代码
  9. 如何下载官方windows10的ios镜像文件
  10. eyoucms添加附属栏目功能
  11. win10无法唤醒睡眠之真头疼
  12. python pandas excel 慢_使用Python、Pandas和openpyx时,小Excel电子表格加载速度非常慢...
  13. Tensorflow2.0---SSD网络原理及代码解析(二)-锚点框的生成
  14. C语言小程序实现输出国际象棋棋盘
  15. 英文论文写作中的词汇句式总结
  16. HCNA之华为ensp基本操作总结
  17. 从Google Maglev到UCloud Vortex,如何造一个牛逼的负载均衡?
  18. Facebook灰度手势识别论文笔记
  19. Android Wifi小记 (2)
  20. 番外篇(1)模块次序表、代数环及其检测算法

热门文章

  1. 摩托车继承自行车和机动车
  2. c++遍历文件夹下所有图片
  3. renderCommnet是什么意思
  4. 【PR】视频转场与视频粗剪
  5. ubuntu 如何查看计算机名称,ubuntu系统下查看电脑配置的详细教程
  6. 计算机二级vf上机试题,计算机二级VF上机题库及答案
  7. 《请回答1988》片尾有感
  8. 雷达篇(五)雷达的应用情况
  9. Halcon 深度学习之语义分割 预处理 案例解析
  10. 苹果怎么关闭自动亮度_小米10的自动亮度到底有什么玄机?听听高管怎么说