hutool工具类中StrUtil如何判断一个字符串是否为空,isEmpty和isBlank的区别

简介: hutool工具类中StrUtil如何判断一个字符串是否为空,isEmpty和isBlank的区别

1:引入依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.16</version>
</dependency>

2:使用方法

String name = " ";
        String name = "null";
        String name = "777"
        System.out.println(StrUtil.isBlank(name));
        System.out.println(StrUtil.isEmpty(name));;

3:StrUtil.isBlank( )

作用:该方法会先将字符串去除头尾空格后再进行判断。如果字符串为 null 或者去除头尾空格后的长度为0,则返回 true;否则返回 false。

//CharSequence是一个描述字符串结构的接口  
  public static boolean isBlank(CharSequence str) {
       //初始化一个length  长度变量
        int length;
       // 如果这个字符串不是null, 并且这个字符串的长度不等于0 
        if (str != null && (length = str.length()) != 0) {
            //遍历这个字符串的长度
            for(int i = 0; i < length; ++i) {
            //判断字符串 str 中第 i 个字符是否为空白字符(空格、制表符、换行符等)。
            //具体来说,str.charAt(i) 表示获取 str 中第 i 个字符,
               然后将其与空白字符进行比较,
            //使用了 CharUtil.isBlankChar 方法。
               这个方法是一个自定义的工具类,
               可能实现了一些逻辑来判断一个字符是否为空白字符。
                if (!CharUtil.isBlankChar(str.charAt(i))) {
                    return false;
                }
            }
            return true;
        } else {
            return true;
        }
    }

81f80366bdc2480294b8a7dd44bf8248.png

4:StrUtil.isEmpty( )

作用:该方法会判断字符串是否为 null 或长度为 0。如果是,则返回 true;否则返回 false。

public static boolean isEmpty(CharSequence str) {
        //返回字符串是否为空并且它的长度是否等于 0 
        return str == null || str.length() == 0;
    }

5:两者区别

区别:在于对空格的处理。isEmpty 只判断字符串本身是否为空,而 isBlank 还会将字符串前后的空格给去掉后再判断是否为空。

例如,下面的代码:

String str = "  ";
System.out.println(StrUtil.isEmpty(str));   // 输出结果:false
System.out.println(StrUtil.isBlank(str));   // 输出结果:true

在这个例子中,字符串 str 的内容是两个空格,显然不是空字符串(长度不为 0),但是它是一个空白字符串,即只包含空格。因此,isEmpty 方法返回 false,而 isBlank 方法返回 true


目录
相关文章
|
JavaScript 索引
【vue】element ui 实现动态表单点击按钮新增行/删除行
【vue】element ui 实现动态表单点击按钮新增行/删除行
3721 0
|
缓存
银河麒麟server-V10配置镜像源
银河麒麟server-V10配置镜像源
16058 1
|
开发框架 Java 数据库
java----包的命名规范
对包的解释与命名规则
10626 0
java----包的命名规范
|
消息中间件 SQL 存储
超详细的RabbitMQ入门,看这篇就够了!
RabbitMQ入门,看这篇就够了
218960 69
|
设计模式 算法 数据库连接
后端开发中的设计模式应用与实践
在软件开发的广袤天地中,设计模式如同夜空中最亮的星辰,引领着开发者们穿越复杂系统的迷雾。本文旨在通过深入浅出的方式,不仅探讨设计模式的理论精髓,揭示它们在后端架构中的重要性,还将以生动的实践案例,展示如何在实际项目中巧妙运用这些模式。我们邀请您一同踏上这场编程之旅,探索如何借助设计模式的力量,让后端系统更加健壮、灵活且易于维护,共同揭开后端技术神秘面纱的一角。
|
SQL 缓存 安全
深入解析MyBatis-Plus LambdaQueryWrapper与QueryWrapper:高效数据查询的秘密
深入解析MyBatis-Plus LambdaQueryWrapper与QueryWrapper:高效数据查询的秘密
13838 2
|
NoSQL 前端开发 Redis
Windows 下安装和配置 Redis (图文教程)
Windows 下安装和配置 Redis (图文教程)
|
前端开发 Java
前后端分离的跨域问题解决:No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.
本文介绍了解决前后端分离项目中跨域问题的方法,包括添加`CorsConfig`配置类和重写`WebMvcConfigurer`接口的`addCorsMappings`方法,允许前端请求访问后端资源,并提供了具体的代码示例。
前后端分离的跨域问题解决:No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.
|
JavaScript
cnpm 的安装与使用
本文介绍了npm和cnpm的概念、安装nodejs的步骤,以及cnpm的安装和使用方法,提供了通过配置npm使用中国镜像源来加速包下载的替代方案,并说明了如何恢复npm默认仓库地址。
cnpm 的安装与使用
下一篇
oss云网关配置