StringUtils里的isEmpty方法和isBlank方法的区别
文章目录
- 前言
- 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;}}
结论
通过以上代码对比我们可以看出:
isEmpty 没有忽略空格参数,是以是否为空和是否存在为判断依据。
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方法的区别相关推荐
- StringUtils里面的 isEmpty方法和isBlank方法的区别
写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感兴 ...
- 关于StringUtils里isEmpty方法和isBlank方法
一.前言 StringUtils 的操作对象是 Java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,输入的 String参数 为 null 也不会抛出 ...
- Java并发编程—schedule方法和scheduleAtFixedRate方法的区别
原文作者:一叶丿清风 原文地址:schedule方法和scheduleAtFixedRate方法的区别 schedule方法和scheduleAtFixedRate方法都可以实现任务的延时和不延时执行 ...
- get方法和post方法的区别及常用的请求方式
get方法和post方法的区别: get方法是从服务器上获取资源:post方法是向服务器传送数据: get方法参数是通过url传递的,post方法是放在request body中:GET比POST更不 ...
- 请简述一下线程的sleep()方法和yield()方法的区别?
请简述一下线程的sleep()方法和yield()方法的区别? ①sleep()方法给其他线程机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会. yield()方法只会给相同优先级或更高优 ...
- flush方法和close方法的区别
package com.learn.Demo05Writer;import java.io.FileWriter; import java.io.IOException;/*flush方法和close ...
- ExtJS中listener方法和handler方法的区别
listener方法和handler方法的区别在文档中的说明的太玄乎了,看不懂 listeners监听能够对一个click Event事件添加任意多个的事件响应处理函数 而handler处理只能够通过 ...
- python predict_对Keras中predict()方法和predict_classes()方法的区别说明
1 predict()方法 当使用predict()方法进行预测时,返回值是数值,表示样本属于每一个类别的概率,我们可以使用numpy.argmax()方法找到样本以最大概率所属的类别作为样本的预测标 ...
- java——Scanner中nextLine()方法和next()方法的区别
遇到一个有意思的东西,在整理字符串这块知识的时候,发现我在用Scanner函数时,在字符串中加入空格,结果空格后面的东西没有输出来(/尴尬),不多说直接上代码: import java.util.Sc ...
最新文章
- css设置鼠标指针光标样式
- Angularjs controller之间的通信
- xps13 linux 硬盘分区,在xps13上安装ubuntu16.04教程
- SpringBoot 日志配置
- 【CodeForces】741 D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(dsu on tree)
- django/python日志logging 的配置以及处理
- 快讯:百度正式宣布CTO李一男离职
- php接口前端,php 接口与前端数据交互实现示例代码
- 如何下载官方windows10的ios镜像文件
- eyoucms添加附属栏目功能
- win10无法唤醒睡眠之真头疼
- python pandas excel 慢_使用Python、Pandas和openpyx时,小Excel电子表格加载速度非常慢...
- Tensorflow2.0---SSD网络原理及代码解析(二)-锚点框的生成
- C语言小程序实现输出国际象棋棋盘
- 英文论文写作中的词汇句式总结
- HCNA之华为ensp基本操作总结
- 从Google Maglev到UCloud Vortex,如何造一个牛逼的负载均衡?
- Facebook灰度手势识别论文笔记
- Android Wifi小记 (2)
- 番外篇(1)模块次序表、代数环及其检测算法