isEmpty() 和 isBlank()的区别

isEmpty() 和 isBlank()的区别

平时自己开发的时候没有注意到这个地方,直到实习的时候代码审查的时候发现其用法上两者的不同.

isEmpty()

java 复制代码
public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
}

isBlank()

java 复制代码
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;
    }
}

isWhitespace()

用于判断是否为空白字符。

java 复制代码
    public static boolean isWhitespace(char ch) {
        return isWhitespace((int)ch);
    }
复制代码
判断是空白字符的标准:

Unicode space character(SPACE_SEPARATOR、LINE_SEPARATOR、PARAGRAPH_SEPARATOR)
\t:制表符。
\n:换行符。
\u000B:线路表符号。
\f:换页符。
\r:回车。
\u001C:文件分隔符。
\u001D:"成组分离"符。
\u001E:记录分隔符号。
\u001F:单元分隔符。

null和空字符串的区别

  • null表示一个变量没有引用任何对象,而空字符串表示一个字符串变量引用了一个长度为0的字符串。

  • null:表示一个变量没有引用任何对象 。也就是说,这个变量还没有被分配内存

  • 空字符串:表示一个字符串变量引用了一个长度为0的字符串

java 复制代码
String str = ""; //空字符串

实例

java 复制代码
isEmpty(null)------true
isEmpty("")------true  //空字符串
isEmpty(" ")------false //
isEmpty("abc")----false
java 复制代码
isBlank(null)------true
isBlank("")------true
isBlank(" ")------true 
isBlank("\t \n \f \r")------true      //制表符、换行符、换页符和回车符
isBlank("abc")------false

参考

参考:https://blog.csdn.net/b635781894/article/details/107384059?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172161473916800178560732%2522%252C%2522scm%2522%253A%252220140713.130102334...%2522%257D\&request_id=172161473916800178560732\&biz_id=0\&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend\~default-2-107384059-null-null.142^v100^pc_search_result_base3\&utm_term=iswhitespace什么意思\&spm=1018.2226.3001.4187

https://blog.csdn.net/lyj15012351173/article/details/135755530?ops_request_misc=\&request_id=\&biz_id=102\&utm_term=Java空字符串和null\&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb\~default-1-135755530.142^v100^pc_search_result_base3\&spm=1018.2226.3001.4187

相关推荐
wxwx_bscxy32211 分钟前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite
evans在进步1 小时前
Tomcat NIO 工作原理详解:从 Acceptor、Poller 到容器处理链
java·tomcat·nio
渡我白衣3 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
电商API_180079052473 小时前
电商商品价格监控工具淘宝京东商品价格抓取API项目实操分享
java·大数据·开发语言·前端·数据挖掘
zzzll11113 小时前
深度剖析:HashMap 并发死循环与 ConcurrentHashMap 两代演进全解
java·开发语言
秋名RG3 小时前
2026/5/27 生产事故复盘与整改方案
java
血小板要健康4 小时前
链表 阶段算法总结
java·数据结构·笔记·算法·leetcode·链表
坐吃山猪4 小时前
【多线程】CompletableFuture使用
java·开发语言·多线程
m0_587383004 小时前
点餐预约核销系统的架构脉络
java·架构·系统架构·需求分析
代码方舟4 小时前
O2O二手车交易平台B端车商管理后台:基于天远车信盟出险构建自动化车况评估网关
java·运维·人工智能·自动化