文
章
目
录
章
目
录
学习如何以区分大小写的方式比较两个String对象的内容,可以使用String.equals() API。对于不区分大小写的比较,我们可以使用equalsIgnoreCase()方法。
永远不要使用’==’运算符来检查字符串的相等性。它验证对象引用,而不是内容,这在大多数情况下是不可取的。
1.String.equals() API
在Java中,String.equals()方法比较一个字符串与作为方法参数传递的对象。只有在以下情况下才返回true:
- 参数对象是String类型。
- 参数对象不为null。
- 表示与当前字符串相同的字符序列。
String str1 = "alex";
String str2 = "alex";
String str3 = "alexa";
Assertions.assertTrue(str1.equals(str2));
Assertions.assertFalse(str1.equals(str3));
2. 抛出NullPointerException
equals()方法不支持null参数,并会抛出NullPointerException异常。
String str1 = "alex";
Assertions.assertThrows(NullPointerException.class, () -> {
str1.contains(null);
});
3.仅支持区分大小写的比较
以下Java程序演示了equals()方法以区分大小写的方式进行内容比较。如果更改大小写,字符串被视为不同。
String str1 = "alex";
Assertions.assertTrue(str1.equals("alex"));
Assertions.assertFalse(str1.equals("Alex"));
4.’==’运算符和equals()方法的区别
如前所述,’==’运算符检查相同的对象引用,而不检查字符串内容。而equals()方法严格检查字符串内容。
在以下Java程序中,我们创建了两个String对象。首先,我们使用’==’运算符比较这两个对象,结果为false,因为它们在内存中是不同的对象。
然后,我们使用equals()方法检查字符串的内容,它返回true,因为虽然对象不同,但它们的内容相同。
String strObj1 = new String("test");
String strObj2 = new String("test");
Assertions.assertFalse(strObj1 == strObj2);
Assertions.assertTrue(strObj2.equals(strObj2));
为了更深入地理解’==’运算符和equals()方法的区别,请参考Java中 == 和 equals 的区别这篇文章。