当前位置: 首页 > news >正文

【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

isEmpty方法源码:

 public static boolean isEmpty(CharSequence cs){return (cs == null) || (cs.length() == 0);}

isBlank方法源码详解

    public static boolean isBlank(CharSequence cs){int strLen;if ((cs == null) || ((strLen = cs.length()) == 0))return true;int strLen;for (int i = 0; i < strLen; i++) {if (!Character.isWhitespace(cs.charAt(i))) {return false;}}return true;}

源码分析:首先传入的参数是null或者空字符串的时候会返回true,接下来是通过Character.isWhitespace方法判断字符是否全部是空白字符(空格、tab键、换行),如果是就返回false,否则返回true;isNotBlank方法跟isBlank方法相反;

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基因组学中的深度学习
  • C++学习笔记(8)
  • 单点登录及登录相关功能1
  • 代码随想录:279. 完全平方数
  • Qt 模仿企业微信图标实现按钮图片文字上下结构
  • MDC实现日志链路追踪
  • 高性能计算应用优化之代码实现调优(一)
  • TypeScript Agenda异常 undefined (reading ‘collection‘)
  • word中怎么快速选中光标之前或之后的全部内容?
  • 二、Maven工程的构建--JavaSEJavaEE
  • 软考高级:系统架构设计师——软件架构设计 Chapter 笔记
  • Redis持久化机制—RDB与AOF
  • 海外云手机是否适合运营TikTok?
  • GitLab管理之迁移GitLab群组
  • 基础闯关5
  • .pyc 想到的一些问题
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【翻译】babel对TC39装饰器草案的实现
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Android组件 - 收藏集 - 掘金
  • angular组件开发
  • ComponentOne 2017 V2版本正式发布
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • JavaScript学习总结——原型
  • Js基础知识(四) - js运行原理与机制
  • REST架构的思考
  • Selenium实战教程系列(二)---元素定位
  • SQLServer之创建数据库快照
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 技术:超级实用的电脑小技巧
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 力扣(LeetCode)357
  • 数据科学 第 3 章 11 字符串处理
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 昨天1024程序员节,我故意写了个死循环~
  • ## 基础知识
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • ()、[]、{}、(())、[[]]命令替换
  • (2015)JS ES6 必知的十个 特性
  • (35)远程识别(又称无人机识别)(二)
  • (C++20) consteval立即函数
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (回溯) LeetCode 131. 分割回文串
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (新)网络工程师考点串讲与真题详解
  • (译)计算距离、方位和更多经纬度之间的点
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)ABI是什么
  • (转)setTimeout 和 setInterval 的区别
  • (转)大道至简,职场上做人做事做管理
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .“空心村”成因分析及解决对策122344
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • /bin/bash^M: bad interpreter: No such file or directory