StringUtils中isNotEmpty和isNotBlank及isBlank()和isEmpty()区别

本文详细解析了Java中字符串判空的方法,包括StringUtils的isEmpty、isBlank、isNotEmpty及isNotBlank等函数的区别与应用场景,帮助开发者准确判断字符串状态。

empty:表示对象为空或长度为0

blank: 表示对象为空或长度为0、空格字符串

null:    表示对象为空

先看看isEmptyisBlank

StringUtils.isBlank()

public class Demo9 {
    public static void main(String[] args) {
        String a = "";
        String b = "    ";
        String c = null;
        System.out.println(StringUtils.isBlank(a)); //true
        System.out.println(StringUtils.isBlank(b)); //true
        System.out.println(StringUtils.isBlank(c)); //true
    }
}
2 StringUtils.isEmpty()
public class Demo9 {
    public static void main(String[] args) {
        String a = "";
        String b = "    ";
        String c = null;
        System.out.println(StringUtils.isEmpty(a)); //true
        System.out.println(StringUtils.isEmpty(b)); //false
        System.out.println(StringUtils.isEmpty(c)); //true
    }
}

只要对象为null 不管是StringUtils.isEmpty()还是StringUtils.isBlank() 结果都是true

对象是空或者长度为零StringUtils.isEmpty()和StringUtils.isBlank() 结果都是true

对象为空或者长度为零StringUtils.isBlank()和StringUtils.isBlank() 为ture。对象长度为空格字符串StringUtils.isEmpty()结果为false而StringUtils.isBlank()结果为true

本质上讲:

isEmpty 等价于 string == null || string.length == 0

isBlank  等价于 string == null || string.length == 0 || string .trim().length == 0

非空正好相反:

isNotEmptyisNotBlank都是判断字符串非空:

1 isNotBlank

public class Demo9 {
    public static void main(String[] args) {
        String a = "";
        String b = "    ";
        String c = null;
        System.out.println(StringUtils.isNotBlank(a)); //false
        System.out.println(StringUtils.isNotBlank(b)); //false
        System.out.println(StringUtils.isNotBlank(c)); //false
    }
}
2 isNotEmpty
public class Demo9 {
    public static void main(String[] args) {
        String a = "";
        String b = "    ";
        String c = null;
        System.out.println(StringUtils.isNotEmpty(a)); //false
        System.out.println(StringUtils.isNotEmpty(b)); //true
        System.out.println(StringUtils.isNotEmpty(c)); //false
    }

}

 

相反

isNotEmpty等价于 a != null && a.length > 0

isNotBlank 等价于 a != null && a.length > 0 && str.trim().length > 0

StringUtils 官方API http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html

中文版本API https://www.bropen.com.cn/tech_docs/docs/BroToolkit/gapi/bropen/toolkit/utils/StringUtils.html

### isNotEmpty isNotBlank区别与用法 在编程中,`isNotEmpty` `isNotBlank` 是用于判断字符串是否非空或是否包含有效字符的常用方法。以下是它们的区别具体用法: #### 1. **isNotEmpty 方法** `isNotEmpty` 方法主要用于判断字符串是否不为空(即不是 `null` 且长度大于 0)。如果字符串为 `null` 或者长度为 0,则返回 `false`;否则返回 `true`。 代码实现如下: ```java public static boolean isNotEmpty(String str) { return !isEmpty(str); } ``` 根据源码分析[^1],`isNotEmpty` 的逻辑依赖于 `isEmpty` 方法。它仅检查字符串是否为 `null` 或其长度是否为 0,而不考虑字符串内容是否包含空白字符。 - 示例: ```java StringUtils.isNotEmpty(null); // false StringUtils.isNotEmpty(""); // false StringUtils.isNotEmpty(" "); // true StringUtils.isNotEmpty("abc"); // true ``` #### 2. **isNotBlank 方法** `isNotBlank` 方法不仅检查字符串是否不为空,还进一步验证字符串是否包含非空白字符。如果字符串为 `null`、长度为 0 或仅包含空白字符(如空格、制表符等),则返回 `false`;否则返回 `true`。 代码实现如下: ```java public static boolean isNotBlank(String str) { return !isBlank(str); } ``` 根据源码分析,`isNotBlank` 的逻辑依赖于 `isBlank` 方法。它会遍历字符串中的每个字符,确保至少存在一个非空白字符。 - 示例: ```java StringUtils.isNotBlank(null); // false StringUtils.isNotBlank(""); // false StringUtils.isNotBlank(" "); // false StringUtils.isNotBlank("abc"); // true StringUtils.isNotBlank(" "); // false ``` #### 3. **主要区别** | 特性 | isNotEmpty | isNotBlank | |-----------------------|-------------------------------------|-------------------------------------| | **检查内容** | 检查字符串是否非空(非 null 且长度 > 0) | 检查字符串是否非空且包含非空白字符 | | **对空白字符的处理** | 不检查空白字符 | 检查并排除空白字符 | | **返回值示例** | `" "` 返回 `true` | `" "` 返回 `false` | #### 4. **应用场景** - **isNotEmpty**:适用于需要简单判断字符串是否非空的场景。 - **isNotBlank**:适用于需要严格判断字符串是否包含有效字符的场景。 #### 5. **代码示例** 以下是一个综合示例,展示两种方法的使用场景: ```java public class StringUtilsExample { public static void main(String[] args) { String str1 = null; String str2 = ""; String str3 = " "; String str4 = "abc"; System.out.println(StringUtils.isNotEmpty(str1)); // false System.out.println(StringUtils.isNotEmpty(str2)); // false System.out.println(StringUtils.isNotEmpty(str3)); // true System.out.println(StringUtils.isNotEmpty(str4)); // true System.out.println(StringUtils.isNotBlank(str1)); // false System.out.println(StringUtils.isNotBlank(str2)); // false System.out.println(StringUtils.isNotBlank(str3)); // false System.out.println(StringUtils.isNotBlank(str4)); // true } } ``` ### 总结 `isNotEmpty` `isNotBlank` 的核心区别在于对空白字符的处理方式。`isNotEmpty` 只关注字符串是否非空,而 `isNotBlank` 则更严格地要求字符串包含至少一个非空白字符。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值