如果您像我一样,当我刚开始使用Java时,我想使用“ ==”运算符来测试两个String实例是否相等,但是无论好坏,这都不是在Java中实现的正确方法。
在本教程中,我将演示几种正确地比较Java字符串的方法,从我通常使用的方法开始。在本Java字符串比较教程的最后,我还将讨论为什么在比较Java字符串时“ ==”运算符不起作用。
选项1:使用equals方法
对Java字符串进行比较大多数时候(可能是95%的时间),我将字符串与Java String类的equals方法进行比较,如下所示:
if (string1.equals(string2))
此String equals方法查看两个Java字符串,如果它们包含完全相同的字符串,则认为它们相等。
让我们看一个使用equals方法的快速String比较示例,如果运行了以下测试,则两个字符串将不被视为相等,因为字符并不完全相同(字符的大小写不同):
String string1 = "foo";
String string2 = "FOO";
if (string1.equals(string2))
{
// this line will not print because the
// java string equals method returns false:
System.out.println("The two strings are the same.")
}
但是,当两个字符串包含完全相同的字符串时,equals方法将返回true,如以下示例所示:
String string1 = "foo";
String string2 = "foo";
// test for equality with the java string equals method
if (string1.equals(string2))
{
// this line WILL print
System.out.println("The two strings are the same.")
}
选项2:使用equalsIgnoreCase方法进行字符串比较
在某些字符串比较测试中,您将要忽略字符串是大写还是小写。当您要以不区分大小写的方式测试字符串是否相等时,请使用String类的equalsIgnoreCase方法,如下所示:
String string1 = "foo";
String string2 = "FOO";
// java string compare while ignoring case
if (string1.equalsIgnoreCase(string2))
{
// this line WILL print
System.out.println("Ignoring case, the two strings are the same.")
}
选项3:使用compareTo方法比较Java字符串
还有另一种比较不常见的比较Java字符串的方法,那就是使用String类的compareTo方法。如果两个字符串完全相同,则compareTo方法将返回值0(零)。这是此字符串比较方法的简要示例:
String string1 = "foo bar";
String string2 = "foo bar";
// java string compare example
if (string1.compareTo(string2) == 0)
{
// this line WILL print
System.out.println("The two strings are the same.")
}
当我写有关Java中的平等概念的文章时,必须注意Java语言在基本Java Object类中包含equals方法。每当创建自己的对象时,只要想提供一种方法来查看对象的两个实例是否相等,就应该在类中重写(并实现)此equals方法(以Java语言提供的相同方式) String equals方法中的这种相等/比较行为)。
您可能需要看一下== 、. equals(),compareTo()和compare()