推荐使用 string.equalsignorecase() 而非 tolowercase/uppercase + equals,因其内部优化支持 unicode 大小写映射(如土耳其语 i/i),不受 locale 影响,且更安全高效;但需注意 null 安全,建议用 "str".equalsignorecase(target) 或 objects.equals() 配合手动忽略大小写处理。

String.equalsIgnoreCase() 是 Java 中专门用来忽略大小写比较两个字符串是否相等的方法,它比先转成统一大小写再用 equals() 更安全、更高效。
为什么推荐用 equalsIgnoreCase 而不是 toLowerCase/UpperCase + equals
直接调用 equalsIgnoreCase() 内部已做优化,能正确处理 Unicode 大小写映射(比如土耳其语的 I/i 特殊规则),而手动调用 toLowerCase() 可能因区域设置(Locale)不同导致意外结果。例如:
- 在土耳其 Locale 下,
"I".toLowerCase()会变成"ı"(无点 i),而非"i"; -
"I".equalsIgnoreCase("i")则始终返回true,不受 Locale 影响。
基本用法:直接比较两个字符串
语法简单,无需预处理:
String s1 = "Hello"; String s2 = "HELLO"; boolean result = s1.equalsIgnoreCase(s2); // true
注意:equalsIgnoreCase() 对 null 不安全 —— 如果调用对象是 null,会抛出 NullPointerException。所以实际使用中建议先判空:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- 推荐写法:
Objects.equals(str1, str2)(自动处理 null)+ 配合手动忽略大小写逻辑,或 - 稳妥写法:
str1 != null && str1.equalsIgnoreCase(str2)
和 ==、equals 的关键区别
== 比较引用,equals() 区分大小写,equalsIgnoreCase() 才真正按字符内容忽略大小写判断:
-
"abc" == "ABC"→false(引用不同) -
"abc".equals("ABC")→false(大小写敏感) -
"abc".equalsIgnoreCase("ABC")→true(忽略大小写)
常见误区提醒
不要链式调用可能返回 null 的方法后再调用 equalsIgnoreCase():
- ❌ 错误:
getUserInput().equalsIgnoreCase("yes")(如果getUserInput()返回 null,直接 NPE) - ✅ 正确:
"yes".equalsIgnoreCase(getUserInput())(把字面量放前面,避免空指针)
这种写法利用了“常量字符串非 null”的特性,是业界常用的安全习惯。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










