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 小时前
新版AI开发框架SpringAIAlibaba vs AgentScope 选型指南
java·开发语言·人工智能·ai·agent·alibaba·springai
凯瑟琳.奥古斯特19 小时前
原码与补码乘法符号位处理差异
java·开发语言·职场和发展
iiiiyu19 小时前
面向对象案例
java·大数据·开发语言·数据结构·python·编程语言
yanghuashuiyue19 小时前
关于Eclipse和IDEA对比
java·ide·intellij-idea
Nontee19 小时前
三大范式是什么?
java·前端·数据库
pursuit_csdn19 小时前
力扣周赛 503
java·算法·leetcode
Chase_______19 小时前
【Java】String 常量池、== 与 equals 详解:从引用比较到 intern() 一次讲清
java·开发语言
专注VB编程开发20年19 小时前
B4A要编绎成Release发布APP/waiting for ide debugger to connect
java·b4a
我欲扶摇九万里19 小时前
Mac版idea快捷键失效的原因及解决方法
java·macos·intellij-idea
拙野19 小时前
【保姆级教程】Claude Code无缝集成DeepSeek V4 Pro
java·人工智能·deepseek·claudecode·ai coding