Se você é como eu, quando comecei a usar Java, queria usar o operador "==" para testar se duas instâncias de String eram iguais, mas para melhor ou para pior, essa não é a maneira correta de fazer isso em Java.
Neste tutorial, demonstrarei várias maneiras diferentes de comparar corretamente as seqüências Java, começando com a abordagem que utilizo na maioria das vezes. No final deste tutorial de comparação de seqüências Java, também discutirei por que o operador "==" não funciona ao comparar sequências Java.
Opção 1: Comparação de Java String com o método equals
Na maioria das vezes (talvez 95% do tempo), comparo strings com o método equals da classe Java String, desta forma:
if (string1.equals(string2))
Esse método String equals examina as duas seqüências Java e, se elas contiverem exatamente a mesma sequência de caracteres, serão consideradas iguais.
Examinando um exemplo rápido de comparação de strings com o método equals, se o teste a seguir fosse executado, as duas strings não seriam consideradas iguais porque os caracteres não são exatamente iguais (o caso dos caracteres é diferente):
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.")
}
Mas, quando as duas cadeias contêm exatamente a mesma cadeia de caracteres, o método equals retornará true, como neste exemplo:
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.")
}
Opção 2: comparação de cadeias com o método equalsIgnoreCase
Em alguns testes de comparação de cadeias, você deve ignorar se as cadeias são maiúsculas ou minúsculas. Quando você quiser testar suas seqüências de caracteres quanto à igualdade dessa maneira, não use maiúsculas e minúsculas, use o método equalsIgnoreCase da classe String, desta forma:
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.")
}
Opção 3: Comparação de Java String com o método compareTo
Há também uma terceira maneira menos comum de comparar seqüências de caracteres Java, e isso é com o método compareTo da classe String. Se as duas strings forem exatamente iguais, o método compareTo retornará um valor 0 (zero). Aqui está um exemplo rápido de como é essa abordagem de comparação de String:
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.")
}
Enquanto escrevo sobre esse conceito de igualdade em Java, é importante observar que a linguagem Java inclui um método equals na classe Java Object básica. Sempre que você estiver criando seus próprios objetos e desejar fornecer um meio de verificar se duas instâncias do seu objeto são "iguais", você deve substituir (e implementar) esse método equals em sua classe (da mesma forma que a linguagem Java fornece esse comportamento de igualdade / comparação no método String equals).
Você pode dar uma olhada nisso ==, .equals (), compareTo () e compare ()