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

相关推荐
苦学编程的谢19 分钟前
多线程进阶
java·开发语言·java-ee
Uranus^27 分钟前
深入解析Java微服务架构:Spring Boot与Spring Cloud的整合实践
java·spring boot·spring cloud·微服务·分布式系统
牛马baby1 小时前
Java高频面试之并发编程-18
java·开发语言·面试
蒂法就是我1 小时前
Spring的后置处理器是干什么用的?扩展点又是什么?
java·后端·spring
CodeLinghu1 小时前
宝塔面板部署前后端项目SpringBoot+Vue2
java·spring boot·后端
悟能不能悟1 小时前
Spring Boot循环依赖的陷阱与解决方案:如何打破“Bean创建死循环”?
java·spring boot·spring
Zero two and hiro1 小时前
tomcat一闪而过,按任意键继续以及控制台中文乱码问题
java·服务器·tomcat
纸包鱼最好吃1 小时前
java基础-关键字:static、单例模式
java·开发语言
编程、小哥哥2 小时前
Java面试深度解析:微服务与云原生技术应用场景详解
java·spring cloud·微服务·云原生·面试·kubernetes·链路追踪
bjbxkj2 小时前
Profinet转Ethernet IP主站网关:点燃氢醌生产线的智慧之光!
java·网络·tcp/ip