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

相关推荐
oak隔壁找我4 分钟前
公司级 Maven Parent POM 设计指南
java·后端
zl97989917 分钟前
SpringBoot-Web开发之内容协商
java·spring boot
bb456b18 分钟前
Snipaste (截图贴图工具) 精准截图 中文免费版
java·工具·贴图
SimonKing43 分钟前
【开发者必备】Spring Boot 2.7.x:WebMvcConfigurer配置手册来了(三)!
java·后端·程序员
2301_8012522243 分钟前
前端框架Vue(Vue 的挂载点与 data 数据对象)
java·前端·javascript·vue.js·前端框架
ArabySide1 小时前
【Spring Boot】深入浅出Spring Boot中的控制反转与依赖注入
java·spring boot·后端
shepherd1111 小时前
破局延时任务(上):为什么选择Spring Boot + DelayQueue来自研分布式延时队列组件?
java·spring boot·后端
技术杠精1 小时前
Docker Swarm之Java 应用部署与平滑更新
java·docker·容器
beyond阿亮1 小时前
nacos支持MCP Server注册与发现
java·python·ai·nacos·mcp
zl9798991 小时前
SpringBoot-数据访问之JDBC
java·spring boot