news 2026/6/14 18:04:57

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 18:02:50

深入解析MPC7450处理器TLB缺失异常处理机制与软件实现

1. 项目概述:MPC7450的MMU与TLB异常处理在嵌入式系统和实时操作系统的开发中,尤其是在航空电子、网络通信设备等对可靠性和确定性要求极高的领域,深入理解处理器的内存管理单元(MMU)及其异常处理机制,是进行…

作者头像 李华
网站建设 2026/6/14 17:58:03

从SPI总线到RabbitMQ:实战中如何为你的项目选择同步还是异步通信?

从SPI总线到RabbitMQ:实战中如何为你的项目选择同步还是异步通信?在构建现代分布式系统或嵌入式设备时,通信模式的选择往往决定了系统的性能上限和可维护性下限。我曾见过一个智能家居项目因为错误使用同步HTTP调用导致网关在设备离线时完全阻…

作者头像 李华
网站建设 2026/6/14 17:45:57

5分钟掌握Ketcher:免费开源的化学结构编辑器完全指南

5分钟掌握Ketcher:免费开源的化学结构编辑器完全指南 【免费下载链接】ketcher Web-based molecule sketcher 项目地址: https://gitcode.com/gh_mirrors/ke/ketcher Ketcher是一款功能强大的开源化学结构编辑器,专为化学家、生物学家和科研人员设…

作者头像 李华