java 如何比较string
比较字符串的方法
在Java中,字符串的比较可以通过多种方式实现,具体取决于比较的需求(如内容、大小写敏感性等)。以下是常见的字符串比较方法:
使用equals()方法进行内容比较
equals()方法用于比较两个字符串的内容是否完全相同,区分大小写。
String str1 = "Hello";
String str2 = "hello";
boolean isEqual = str1.equals(str2); // 返回false,因为大小写不同
使用equalsIgnoreCase()方法忽略大小写比较
equalsIgnoreCase()方法比较字符串内容时不区分大小写。
String str1 = "Hello";
String str2 = "hello";
boolean isEqual = str1.equalsIgnoreCase(str2); // 返回true
使用compareTo()方法进行字典序比较
compareTo()方法按字典顺序比较两个字符串,返回一个整数值:
- 若字符串相等,返回
0。 - 若调用字符串在字典中靠前,返回负数。
- 若调用字符串在字典中靠后,返回正数。
String str1 = "apple";
String str2 = "banana";
int result = str1.compareTo(str2); // 返回负数,因为"apple"在"banana"之前
使用==进行引用比较
==运算符比较的是字符串对象的引用(内存地址),而非内容。通常不推荐用于内容比较。
String str1 = "Hello";
String str2 = new String("Hello");
boolean isSameRef = (str1 == str2); // 返回false,因为引用不同
使用StringUtils(Apache Commons库)
如果需要更灵活的字符串比较(如空值处理),可以使用Apache Commons Lang库的StringUtils工具类。

import org.apache.commons.lang3.StringUtils;
boolean isEqual = StringUtils.equals(str1, str2); // 支持null安全比较
注意事项
- 内容比较:优先使用
equals()或equalsIgnoreCase(),避免使用==。 - 性能优化:对于频繁比较的字符串,可考虑使用
String.intern()方法将字符串存入常量池。 - 空指针处理:调用
equals()时需确保非空对象,或使用Objects.equals()(Java 7+)。






