StringUtils里的isEmpty方法和isBlank方法的区别

StringUtils里的isEmpty方法和isBlank方法的区别前言我们常说的字符串为空,其实就是一个没有字符的空数组。比如:Stringa=””;a就可以称为是一个空字符串。由于String在Java中底层是通过char数组去存储字符串的,所以空字符串对应的char数组表现形式为privatefinalcharvalue[]=newchar[0];但实际工作中,我们可以需要对字符串进行一些校验,比…

大家好,又见面了,我是你们的朋友全栈君。

前言

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

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) {
                // 判断字符是否为空格、制表符、tab
                if (!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("   ") = false

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

喜欢

喜欢文章的话,可以扫码关注我的微信公众号。

                                                               img

搜索微信公众号:Java知其所以然,可免费领取某课、Java 后端面经等资源,还有统一环境(教你怎么配置一套开发环境)视频领取。

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131653.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java运算中的取余

    java运算中的取余java中的取模(取余)在java运算中有时会出现对一个整数取模(取余)操作,首先复习一下小学学过的除法公式:除数÷被除数=商如果没有被整数就会出现余数,例:10÷3=3余数为1在java运算中,取余符号是%1、第一种情况一个大的整数对一个比它小的整数取余publicstaticvoidmain(String[]args){in…

    2022年6月1日
    138
  • python算法(2)兔子产子(斐波那切数列)「建议收藏」

    python算法(2)兔子产子(斐波那切数列)「建议收藏」兔子产子1.问题描述有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总对数为多少?2.问题分析兔子产子

    2022年7月30日
    1
  • 什么叫侧面指纹识别_新科技?侧面指纹解锁有什么不同?

    什么叫侧面指纹识别_新科技?侧面指纹解锁有什么不同?原标题:新科技?侧面指纹解锁有什么不同?手机的时代更新的太快,以前诺基亚的密码解锁,到后来安卓苹果的指纹解锁,虹膜解锁,面部识别解锁,各式各样的解锁方式。不过今天说的主题也是指纹解锁,不过不是以往的正面home键,也不是背面指纹解锁器,而是侧面指纹解锁。不得不承认,智能交互时代不断刷新人们的生活,智能手机行业也发展得如火如荼。各智能手机厂商凭借在手机里边加入各种“黑科技”,用自己独特的风格来吸引消…

    2022年6月15日
    68
  • apache的安装与配置_apache2.4安装教程

    apache的安装与配置_apache2.4安装教程准备安装包到https://www.apachelounge.com/download/下载你需要的Apache安装包(注意需要相应的VC运行库)解压文件到指定安装目录3.替换安装路径使用文本编辑器打开Apache的配置文件conf/httpd.conf执行文本替换将”c:/Apache24”全部替换成(你自己解压的路径)“G:\web\apache2.4”4

    2022年9月21日
    2
  • 签名字体怎么练_练字方法练自己名字签字

    签名字体怎么练_练字方法练自己名字签字导读:今天来给大家分享【签名字体怎么练】技法来源于网络,只是分享学习一下。感谢大家的支持,如果,你在签名字体上有什么不懂的可以来询问我的。谢谢大家的浏览!签名字体怎么练1、签名也是字体造型的再创作,因此签名设计对一个人的书法水平和理解能力还是有一定要求的。在此,我建议大家可以先练习好楷书和行书。如果真的没那个天分,就好好练习数字1.2.3.4.5.6.7.8.9。为什么练习数字可以对设计签名有帮助呢,因为数字和汉字笔画在书写方面具有一定的相似性,可以借鉴。同时帮助您练顺运笔。2、要想设计好签名,就要

    2025年9月21日
    4
  • pycharm如何配置anaconda解释器_如何在pycharm中配置anaconda

    pycharm如何配置anaconda解释器_如何在pycharm中配置anacondapython解释器有好多版本,Anaconda里面包含了python解释器,并且包含了很多其他的工具包,所以我们只安装1个Anaconda即可。

    2025年6月29日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号