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

相关推荐
叫我阿柒啊11 分钟前
Java全栈开发面试实战:从基础到微服务的完整技术栈解析
java·spring boot·微服务·前端框架·vue·jwt·全栈开发
前行的小黑炭12 分钟前
Android:在项目当中可能会遇到的ANR,应该如何解决?
android·java·kotlin
索迪迈科技1 小时前
Flink Task线程处理模型:Mailbox
java·大数据·开发语言·数据结构·算法·flink
float_六七5 小时前
IntelliJ IDEA双击Ctrl的妙用
java·ide·intellij-idea
能摆一天是一天6 小时前
JAVA stream().flatMap()
java·windows
颜如玉7 小时前
🤲🏻🤲🏻🤲🏻临时重定向一定要能重定向🤲🏻🤲🏻🤲🏻
java·http·源码
程序员的世界你不懂8 小时前
【Flask】测试平台开发,新增说明书编写和展示功能 第二十三篇
java·前端·数据库
星空寻流年8 小时前
设计模式第一章(建造者模式)
java·设计模式·建造者模式
gb42152879 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python