ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

String的isEmpty与equals(““)的区别

String的isEmpty与equals(““)的区别

目录

1. 核心区别

(1)str.isEmpty()

(2)str.equals("")

2. 等价场景

3. 关键坑 & 最佳写法

标准安全判空写法(推荐)

4. 总结


结论先说:功能近似,但底层实现、性能、空指针风险完全不一样,优先用isEmpty()

1. 核心区别

(1)str.isEmpty()
  • Java 6+ 提供
  • 源码:return value.length == 0;
  • 逻辑:直接判断字符数组长度是否为 0
  • 性能:更快,只取长度,不做逐字符比较
  • 风险:如果 str = null,直接抛NullPointerException
(2)str.equals("")
  • 所有 Java 版本都支持
  • 流程:
    1. 先判断对象是否是同一个
    2. 再判断长度是否相等
    3. 逐字符遍历对比
  • 性能:比isEmpty()
  • 风险:str = null 同样抛空指针

2. 等价场景

字符串不为 null时:

String s = ""; s.isEmpty() // true s.equals("") // true

此时结果完全一致


3. 关键坑 & 最佳写法

两者都不能判 null,下面代码都会报错:

String s = null; s.isEmpty(); // NPE s.equals(""); // NPE
标准安全判空写法(推荐)
  1. 先判null,再判空串:
if (str != null && !str.isEmpty()) { ... }
  1. JDK 6+ 也可用StringUtils(Spring/Commons):
// org.springframework.util.StringUtils StringUtils.hasLength(str); // 同时判 null + 空串

4. 总结

  1. 结果:非 null 字符串下,两者返回值一致。
  2. 性能isEmpty()>equals("")
  3. 空指针:两者都会触发 NPE,都不处理 null。
  4. 建议:日常优先使用isEmpty()
返回列表