【JAVA基础】StringUtils.isEmpty、StringUtils.isBlank()、Objects.isNull()三者区别

📝个人主页🌹:个人主页
⏩收录专栏⏪:日常经验
🌹🌹期待您的关注 🌹🌹,让我们共同进步!
在这里插入图片描述

总是区分不清楚这几个的差别:我们来直接验证一下:

package com.atguigu.signcenter.controller;import com.atguigu.signcenter.annotation.ExistsApiToken;
import com.atguigu.signcenter.annotation.VerifySign;
import com.atguigu.signcenter.constant.ReqParameterConstant;
import com.atguigu.signcenter.entity.User1;
import com.atguigu.signcenter.service.SecurityUtilTestService;
import com.atguigu.signcenter.util.testUtil;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import java.io.UnsupportedEncodingException;
import java.util.*;/***    原文链接:https://blog.csdn.net/weixin_47560078/article/details/118222785*   @author: jd* @create: 2024-07-30*/@Slf4j
@Controller
public class TestController {public static void main(String[] args) {//判断某字符串是否为空或长度为0或由空白符(whitespace)构成System.out.println("=========isBlank=========");System.out.println("StringUtils.isBlank(null) = " + StringUtils.isBlank(null)); //trueSystem.out.println("StringUtils.isBlank(\"\") = " + StringUtils.isBlank("")); //trueSystem.out.println("StringUtils.isBlank(\" \") = " + StringUtils.isBlank(" ")); //trueSystem.out.println("StringUtils.isBlank(\"\\t \\n \\f \\r\") = " + StringUtils.isBlank("\t \n \f \r")); // trueSystem.out.println("StringUtils.isBlank(\"\\b\") = " + StringUtils.isBlank("\b")); //falseSystem.out.println("StringUtils.isBlank(\"bob\") = " + StringUtils.isBlank("bob")); //falseSystem.out.println("StringUtils.isBlank(\" bob \") = " + StringUtils.isBlank(" bob ")); //falseSystem.out.println("=========isNotBlank=========");//判断某字符串是否不为空且长度不为0且不由空白符(whitespace)构成,等于!isBlank(String str)System.out.println("StringUtils.isNotBlank(null) = " + StringUtils.isNotBlank(null));System.out.println("StringUtils.isNotBlank(\"\") = " + StringUtils.isNotBlank(""));System.out.println("StringUtils.isNotBlank(\" \") = " + StringUtils.isNotBlank(" "));System.out.println("StringUtils.isNotBlank(\" \") = " + StringUtils.isNotBlank(" "));System.out.println("StringUtils.isNotBlank(\"\\t \\n \\f \\r\") = " + StringUtils.isNotBlank("\t \n \f \r"));System.out.println("StringUtils.isNotBlank(\"\\b\") = " + StringUtils.isNotBlank("\b"));System.out.println("StringUtils.isNotBlank(\"bob\") = " + StringUtils.isNotBlank("bob"));System.out.println("StringUtils.isNotBlank(\" bob \") = " + StringUtils.isNotBlank(" bob "));System.out.println("=========isEmpty=========");//判断某字符串是否为空,为空的标准是str==null或str.length()==0System.out.println("StringUtils.isEmpty(null) = " + StringUtils.isEmpty(null)); //trueSystem.out.println("StringUtils.isEmpty(\"\") = " + StringUtils.isEmpty("")); //trueSystem.out.println("StringUtils.isEmpty(\" \") = " + StringUtils.isEmpty(" ")); //falseSystem.out.println("StringUtils.isEmpty(\"bob\") = " + StringUtils.isEmpty("bob")); //falseSystem.out.println("StringUtils.isEmpty(\" bob \") = " + StringUtils.isEmpty(" bob ")); //false//只会检查传入的对象是否为null。如果对象为null,则返回true,否则返回falseSystem.out.println("Objects.isNull(null) = " + Objects.isNull(null)); //trueSystem.out.println("Objects.isNull(\"\") = " + Objects.isNull("")); //falseSystem.out.println("Objects.isNull(\"aaa\") = " + Objects.isNull("aaa")); //false}}

结果

=========isBlank=========
StringUtils.isBlank(null) = true
StringUtils.isBlank("") = true
StringUtils.isBlank(" ") = true
StringUtils.isBlank("\t \n \f \r") = true
StringUtils.isBlank("\b") = false
StringUtils.isBlank("bob") = false
StringUtils.isBlank(" bob ") = false
=========isNotBlank=========
StringUtils.isNotBlank(null) = false
StringUtils.isNotBlank("") = false
StringUtils.isNotBlank(" ") = false
StringUtils.isNotBlank(" ") = false
StringUtils.isNotBlank("\t \n \f \r") = false
StringUtils.isNotBlank("\b") = true
StringUtils.isNotBlank("bob") = true
StringUtils.isNotBlank(" bob ") = true
=========isEmpty=========
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false
StringUtils.isEmpty("bob") = false
StringUtils.isEmpty(" bob ") = false
=========Objects.isNull=========
Objects.isNull(null) = true
Objects.isNull("") = false
Objects.isNull("aaa") = false

总结:
我这里对于判空和判断非空都验证了,其实只是记住一方面即可。
判断是null的范围,从粗到细 isBlank < isEmpty < isNUll
//所以总结一下,isBlank的筛选是最粗的,对于null “” “ ” 都是空的,这三个区分不出来,都是true
// isEmpty 则能把null 和“” 这两个区分不出来,都是 true
//isNull 则是最细的 只有真正的null是true,否则是false

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/417748.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

活动系统开发之采用设计模式与非设计模式的区别-数据库设计及代码设计

1、数据库ER图 2、应用框架选用 PHP语言对应的thinkphp6.1应用框架 3、功能代码设计(后端) a、父类Base.php i&#xff1a;控制登录&#xff0c;只能登录后管理员才能操作&#xff1b; ii&#xff1a;控制按钮权限&#xff0c;管理员不仅要登录&#xff0c;且必须要有对应菜单…

【操作系统】进程同步之共享内存

进程的线程共享进程资源&#xff0c;而进程共享计算机资源。 在某种程度上&#xff0c;多进程是共享物理内存的。 由于操作系统的进程管理&#xff0c;不同的进程有自己独立的内存空间&#xff0c;互不干扰。 但是共享内存可以打破这个限制。 共享内存允许不相关的进程访问同…

Linux云计算学习笔记11 (计划任务)

一.基本概念 在Linux操作系统中&#xff0c;除了用户即时执行的命令操作以外&#xff0c;还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务&#xff08;如定期备份、定期采集监测数据&#xff09;。试想一下&#xff0c;如果系统要求在业务不那么繁忙的半夜进行…

【2024数学建模国赛赛题思路】C题第四套思路已出丨仅供参考

问题一思路分析 假定各种农作物未来的预期销售量、种植成本、亩产量和销售价格相对于2023年保持稳定&#xff0c;每季种植的农作物在当季销售。如果某种作物每季的总产量超过相应的预期销售量&#xff0c;超过部分不能正常销售。请针对以下两种情况&#xff0c;分别给出该乡村…

免费申请aws一年免费服务器使用教程

由于近期要测试一个公网项目&#xff0c;对比之下&#xff0c;选择了aws服务器&#xff0c;免费使用一年。 准备&#xff1a;一个visa信用卡即可&#xff0c;需要一个外网邮箱&#xff08;我这边使用的hotmail&#xff09; 注册的步骤不再赘述&#xff0c;切记几个点&#xff0…

景联文科技:专业图像采集服务,助力智能图像分析

景联文科技是专业数据服务公司&#xff0c;致力于为人工智能企业提供从数据采集、清洗到标注的全流程解决方案。协助客户解决AI开发过程中数据处理环节的关键问题&#xff0c;助力企业实现智能化转型。 1.多样化的图像采集服务 景联文科技提供多样化的图像采集服务&#xff0c…

udp网络通信 socket

套接字是实现进程间通信的编程。IP可以标定主机在全网的唯一性&#xff0c;端口可以标定进程在主机的唯一性&#xff0c;那么socket通过IP端口号就可以让两个在全网唯一标定的进程进行通信。 套接字有三种&#xff1a; 域间套接字&#xff1a;实现主机内部的进程通信的编程 …

Kettle发送邮件功能如何配置以实现自动化?

kettle发送邮件如何设置&#xff1f;Kettle配置发送邮件的方法&#xff1f; Kettle发送邮件功能能够帮助用户在数据处理过程中自动发送电子邮件&#xff0c;极大地提高了工作效率。AokSend将详细介绍如何配置Kettle发送邮件功能&#xff0c;以实现自动化操作。 Kettle发送邮件…

C++笔记19•数据结构:红黑树(RBTree)•

红黑树 1.简介&#xff1a; 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路 径会比其他路径长出俩倍…

使用百度飞桨PaddleOCR进行OCR识别

1、代码及文档 代码&#xff1a;https://github.com/PaddlePaddle/PaddleOCR?tabreadme-ov-file 介绍文档&#xff1a;https://paddlepaddle.github.io/PaddleOCR/ppocr/overview.html 2、依赖安装 在使用过程中需要安装库&#xff0c;可以依据代码运行过程中的提示安装。…

MySQL Email验证流程详解:从注册到激活!

MySQL Email通知系统搭建教程&#xff01;如何从MySQL发送邮件&#xff1f; MySQL Email验证是一个至关重要的环节&#xff0c;它确保了用户注册过程的安全性和有效性。AokSend将详细介绍从用户注册到MySQL Email激活的完整流程&#xff0c;帮助开发者更好地理解和实现这一功能…

视频编码与传输 学习笔记 1 一些视频压缩算法的介绍

大概是这么个结构&#xff1a; 说白了&#xff0c;就是视频太大&#xff0c;不压缩不行&#xff0c;因此我们会用压缩比非常夸张但对于视频来说效果很好的压缩方法先对视频压缩&#xff08;source coding&#xff09;然后把压缩后的视频发出去&#xff0c;要看的时候再解压。 就…

青岛实训 8月22号 day34

一、回顾 1.主从复制&#xff08;高可用&#xff09; 2.传统的主从复制 3.gtids事务型的主从复制 4.注意 1&#xff09;server_id唯一 2&#xff09;8.X版本需要get_ssl_pub_key 3&#xff09;5.X不需要 4&#xff09;change master to 5&#xff09;stop | start slave 5.非…

HIVE 数据仓库工具之第二部分(数据库相关操作)

HIVE 数据仓库工具之第二部分&#xff08;数据库相关操作&#xff09; 一、Hive 对数据库的操作1.1 创建数据库1.1.1 创建数据库语法1.1.3 示例 1.2 使用数据库1.2.1 使用数据库语法1.2.2 示例 1.3 修改数据库1.3.1 修改数据库的语法1.3.2 示例 1.4 删除数据库1.4.1 删除数据库…

Aloudata CAN 发布:真正实现企业指标的管理、研发与消费一体化

对于企业的运营和管理来说&#xff0c;集自动化数据生产、业务化数据语言、智能化数据分析的指标管理方案至关重要。 指标是对业务过程和结果的度量&#xff0c;正如德鲁克所说&#xff0c;“如果无法度量就无法管理”。 指标管理痛点爆发&#xff0c;管、研、用一体方案备受青…

python-简单的dos攻击

前言 这个是DOS攻击学习(注意&#xff1a;千万别去攻击有商业价值的服务器或应用&#xff0c;不然会死的很惨(只有一个IP通过公网访问容易被抓),前提是网站没有攻击防御) 创建一个以python编写的后端web服务(好观察) 安装flask pip install flask from flask import Flaskapp …

Day22_K8S

文章目录 3.资源管理方式通过命令管理通过配置文件管理4. 基本概念入门4.1 Namespace4.2 Pod4.3 Label4.4 Deployment4.5 Service5. Pod详解5.1 Pod介绍5.2 Pod配置5.3 Pod生命周期5.3.1 初始化容器5.3.2 钩子函数5.3.3 容器探测5.3.4 重启策略5.4 Pod调度5.4.1 定向调度5.4.2 …

JavaScript DOM事件流之捕获与冒泡

DOM事件流——捕获与冒泡 网页是由一个一个元素组成的&#xff0c;正如我们肉眼所见&#xff0c;网页上的元素存在包含关系&#xff0c;简单的点击又怎么确定到底谁来触发响应呢&#xff1f;想象一下&#xff0c;在纸上画了两个大小不同的同心圆&#xff0c;然后用手指指向它里…

迁移替换AD域时,有几个关键点需要注意

在当今的数字化时代&#xff0c;企业对于身份管理和访问控制的需求日益增长。然而&#xff0c;传统的AD域控方案在面对国产化替代和业务上云的趋势时&#xff0c;逐渐显露出一些局限性。宁盾国产化身份域管作为一种迁移替换AD域控的创新解决方案&#xff0c;正逐渐崭露头角&…

通风天窗代号解析与功能介绍

通风天窗的代号通常涉及其类型、型号、尺寸及功能等多个方面。以下是对通风天窗代号的一般性释义。一、代号结构 通风天窗的代号往往遵循一定的编码规则&#xff0c;以清晰表示其特性。如在18J621-3《通风天窗》图集中&#xff0c;通风天窗的代号可能以“TCxx-xxx”的形式出现&…