java中比对两个字符串并忽略大小写,最常用且推荐的方式是使用string.equalsignorecase()方法;该方法专为忽略大小写设计,简洁安全,但调用对象不能为null,否则抛出nullpointerexception。

Java 中比对两个字符串并忽略大小写,最常用且推荐的方式是使用 String.equalsIgnoreCase() 方法。
用 equalsIgnoreCase() 直接比较
这是专为忽略大小写设计的内置方法,简洁安全,自动处理 null(但调用对象本身不能为 null)。
- 语法:
str1.equalsIgnoreCase(str2) - 返回
true表示内容相同(忽略大小写),false表示不同 - 注意:如果
str1是null,会抛出NullPointerException;建议先判空或用工具类
用 Objects.equals() + toLowerCase()
更健壮的做法:先转小写再用 Objects.equals(),能安全处理 null。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 示例:
Objects.equals(str1 != null ? str1.toLowerCase() : null, str2 != null ? str2.toLowerCase() : null) - 或者简化写法(JDK 7+):
Objects.equals(str1 == null ? null : str1.toLowerCase(), str2 == null ? null : str2.toLowerCase()) - 优点:不会因任一字符串为 null 而崩溃
避免直接用 == 或 equals()
== 比较的是引用,不是内容;equals() 区分大小写,不满足“忽略大小写”要求。
- 错误示例:
"Abc".equals("ABC")→ 返回false - 错误示例:
"Abc" == "abc"→ 几乎总是false(除非是同一字符串常量)
其他可选方式(按需选用)
如需支持 locale 敏感比较(比如土耳其语中 I/i 的特殊规则),可用 String.regionMatches() 或 Collator 类。
- 简单 locale 比较:
str1.regionMatches(true, 0, str2, 0, Math.min(str1.length(), str2.length())) - 强 locale 支持(如排序、国际化):用
Collator.getInstance().compare(str1, str2) == 0
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










