目录1. 核心区别1str.isEmpty()2str.equals()2. 等价场景3. 关键坑 最佳写法标准安全判空写法推荐4. 总结结论先说功能近似但底层实现、性能、空指针风险完全不一样优先用isEmpty()。1. 核心区别1str.isEmpty()Java 6 提供源码return value.length 0;逻辑直接判断字符数组长度是否为 0性能更快只取长度不做逐字符比较风险如果 str null直接抛NullPointerException2str.equals()所有 Java 版本都支持流程先判断对象是否是同一个再判断长度是否相等逐字符遍历对比性能比isEmpty()慢风险str null 同样抛空指针2. 等价场景当字符串不为 null时String s ; s.isEmpty() // true s.equals() // true此时结果完全一致。3. 关键坑 最佳写法两者都不能判 null下面代码都会报错String s null; s.isEmpty(); // NPE s.equals(); // NPE标准安全判空写法推荐先判null再判空串if (str ! null !str.isEmpty()) { ... }JDK 6 也可用StringUtilsSpring/Commons// org.springframework.util.StringUtils StringUtils.hasLength(str); // 同时判 null 空串4. 总结结果非 null 字符串下两者返回值一致。性能isEmpty()equals()。空指针两者都会触发 NPE都不处理 null。建议日常优先使用isEmpty()。
String的isEmpty与equals(““)的区别
目录1. 核心区别1str.isEmpty()2str.equals()2. 等价场景3. 关键坑 最佳写法标准安全判空写法推荐4. 总结结论先说功能近似但底层实现、性能、空指针风险完全不一样优先用isEmpty()。1. 核心区别1str.isEmpty()Java 6 提供源码return value.length 0;逻辑直接判断字符数组长度是否为 0性能更快只取长度不做逐字符比较风险如果 str null直接抛NullPointerException2str.equals()所有 Java 版本都支持流程先判断对象是否是同一个再判断长度是否相等逐字符遍历对比性能比isEmpty()慢风险str null 同样抛空指针2. 等价场景当字符串不为 null时String s ; s.isEmpty() // true s.equals() // true此时结果完全一致。3. 关键坑 最佳写法两者都不能判 null下面代码都会报错String s null; s.isEmpty(); // NPE s.equals(); // NPE标准安全判空写法推荐先判null再判空串if (str ! null !str.isEmpty()) { ... }JDK 6 也可用StringUtilsSpring/Commons// org.springframework.util.StringUtils StringUtils.hasLength(str); // 同时判 null 空串4. 总结结果非 null 字符串下两者返回值一致。性能isEmpty()equals()。空指针两者都会触发 NPE都不处理 null。建议日常优先使用isEmpty()。