StringUtils:isNotEmpty与isNotBlank区别详解

Apache Commons Lang库里的StringUtils类这两个方法进行区分

isNotEmpty

  • 作用​:检查字符串非空​(即不为 null 且长度大于 0)。
  • 逻辑​:
    • 如果字符串是 null → 返回 false
    • 如果字符串是空字符串 "" → 返回 false
    • 其他情况(包括全空白字符的字符串,如 " ")→ 返回 true
public static boolean isNotEmpty(String str) {
    return !isEmpty(str); // isEmpty 检查 str == null || str.length() == 0
}

isNotBlank

  • 作用​:检查字符串非空白​(即包含至少一个非空白字符)。
  • 逻辑​:
    • 如果字符串是 null → 返回 false
    • 如果字符串是空字符串 "" → 返回 false
    • 如果字符串全是空白字符(如 " ")→ 返回 false
    • 其他情况(包含至少一个非空白字符)→ 返回 true
public static boolean isNotBlank(String str) {
    return !isBlank(str); // isBlank 检查 str == null 或 trim 后长度为 0
}

场景对比示例

字符串isNotEmptyisNotBlank
nullfalsefalse
""falsefalse
" "truefalse
"abc"truetrue
" abc "truetrue

性能对比场景实例

场景isNotEmpty 速度isNotBlank 速度
字符串为 null✅ 快(O(1))✅ 快(O(1))
字符串为 ""✅ 快(O(1))✅ 快(O(1))
字符串为 " "✅ 快(O(1))❌ 慢(O(n),需遍历所有字符)
字符串为 "abc"✅ 快(O(1))✅ 较快(O(1),首字符非空白)
字符串为 " a "✅ 快(O(1))✅ 较快(O(1),中间有非空白)

实际建议

  • 性能优化关键点​:
    在需要高频调用且对性能敏感的场景(例如处理海量数据),优先使用 isNotEmpty
  • 逻辑正确性优先​:
    如果业务要求必须排除空白字符(如验证用户输入),即使 isNotBlank 稍慢,也应选择它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值