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 实现动态表单点击按钮新增行/删除行
3912 0
|
druid 关系型数据库 MySQL
【数据库】数据库连接池配置 testOnBorrow
【数据库】数据库连接池配置 testOnBorrow
1654 0
使用markdown-it对markdown进行一个实时解析
# 引言 大家应该都接触过markdown笔记吧,我们常常见到很多能写文章的网页提供了一个实时的markdown解析的功能----即我们在一侧写下markdown语法,右边能够实时解析,并将解析后的markdown语法渲染到右侧页面上。非常炫酷实用,那么这是如何实现的呢?今天我们来一起探究一下。 # 开始 首先,我们这个演示学习在Vue3+TypeScript下使用的,所以我们预先建议准备一个Vue3+Typescript工程。 对于markdown的解析,我们可以使用`markdown-it`来进行解析。 比如,我们在左侧设置一个输入框,接收用户markdown输入,我们通过`ma
|
Java 数据库连接 数据库
探究Java中的MyBatis Plus注解 @TableField:灵活处理字段映射与自动填充
在数据库操作中,字段映射和字段填充是开发者经常需要处理的问题。MyBatis Plus作为一款优秀的ORM框架,提供了注解 `@TableField`,能够帮助开发者更加灵活地处理字段映射,以及在特定场景下实现自动填充功能。本文将深入探讨 `@TableField` 注解的用法及其在持久层开发中的应用。
6485 1
|
SQL XML Java
【mybatis】第二篇:@Select注解中加入字段判断
【mybatis】第二篇:@Select注解中加入字段判断
springboot 各种文件下载方式(最全)
springboot 各种文件下载方式(最全)
6491 0
|
Java Spring 容器
循环依赖难破解?Spring Boot神秘武器@RequiredArgsConstructor与@Lazy大显神通!
【8月更文挑战第29天】在Spring Boot应用中,循环依赖是一个常见问题。当两个或多个Bean相互依赖形成闭环时,Spring容器会陷入死循环。本文通过对比@RequiredArgsConstructor和@Lazy注解,探讨它们如何解决循环依赖问题。**@RequiredArgsConstructor**:通过Lombok生成包含final字段的构造函数,优先通过构造函数注入依赖,简化代码但可能导致构造函数复杂。**@Lazy**:延迟Bean的初始化,直到首次使用,打破创建顺序依赖,增加灵活性但可能影响性能。根据具体场景选择合适方案可有效解决循环依赖问题。
740 0
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
Java 应用服务中间件 微服务
Spring Boot可以同时处理多少请求?
Spring Boot的并发处理能力受硬件、JVM配置、嵌入式Tomcat的线程池(默认最大连接数8192,最大等待数100)、应用效率、系统架构和网络条件影响。开发阶段可能处理数百个并发,优化后在适合的硬件上可处理数千乃至上万并发。大型系统常结合负载均衡器。
1021 2