Java string compare: Comparar strings em Java
Existem três maneiras práticas de se comparar strings em Java. Além dos métodos Java equals()
e Java string compareTo()
, você também pode utilizar o operador ==
para realizar comparações.
Como comparar strings em Java?
Embora você possa comparar tipos de dados primitivos em Java facilmente com o operador Java ==
, fazer isso com strings em Java é um pouco mais complicado. Embora você possa usar o operador ==
, ele não comparará o conteúdo das strings, mas apenas a referência ao objeto. Isso pode ser suficiente ou desejável em alguns casos, mas em outros, você precisará de um método diferente para obter o resultado desejado. Felizmente, a linguagem de programação oferece várias opções. As três mais comuns e práticas são:
- Java
equals()
- Java
compareTo()
para strings - Operador Java
==
Rápido e escalável, confie na hospedagem da IONOS, que inclui domínio grátis no primeiro ano e endereço de e-mail!
- Domínio
- SSL Wildcard
- Suporte 24 horas
Método Java equals()
Para comparar o conteúdo de duas strings em Java de forma simples e prática, o método Java equals()
é a melhor opção. Ele compara os valores das strings e retorna true
se forem iguais ou false
se forem diferentes. A sintaxe do método é:
public boolean equals(objeto1 objeto2)
JavaO funcionamento desse método pode ser mais bem ilustrado com um exemplo simples. Para isso, criamos três strings e comparamos a primeira string com as outras duas. Na prática, o código ficaria assim:
public class Main {
public static void main(String[] args) {
String string1 = "Esta é uma string";
String string2 = "Esta é uma string";
String string3 = "Esta é uma string completamente diferente";
System.out.println(string1.equals(string2));
System.out.println(string1.equals(string3));
}
}
JavaSe executarmos esse código com o comando Java System.out.println
, obteremos o seguinte resultado:
true
false
JavaA string1
e string2
são idênticas, mas string3
difere das outras duas. Enquanto neste exemplo é fácil perceber isso a olho nu, há outros casos em que strings podem parecer semelhantes à primeira vista, mas diferem em algum detalhe. O método Java equals()
é muito eficaz para evitar erros nessas situações.
Java string compareTo()
O segundo método é um pouco mais complexo, mas também é confiável. O método Java string compareTo()
compara strings lexicograficamente com base no valor Unicode dos caracteres individuais em uma string. Os caracteres são comparados e alinhados. Se uma string for igual à outra, o método retorna 0. Se a primeira string for menor que a segunda, será retornado um valor negativo. Se for maior, será retornado um valor positivo. Esta é a sintaxe do método:
public int compareTo(String outraString)
JavaA funcionalidade é explicada através de um exemplo simples. Criamos novamente três strings e comparamos a primeira com as outras duas. Aqui está o código de exemplo:
public class Main {
public static void main(String[] args) {
String string1 = "Esta é uma string";
String string2 = "Esta é uma string";
String string3 = "Esta é uma string completamente diferente";
System.out.println(string1.compareTo(string2));
System.out.println(string1.compareTo(string3));
}
}
JavaAo executarmos este código com System.out.println
, obtemos o seguinte:
0
-20
JavaSe você deseja que o método Java string compareTo()
não faça diferenciações entre maiúsculas e minúsculas, deverá combiná-lo ao compareToIgnoreCase()
. Ele funciona da seguinte maneira:
public class Main {
public static void main(String[] args) {
String string1 = "Esta é uma string";
String string2 = "Esta é uma string";
String string3 = "ESTA É UMA STRING";
System.out.println(string1.compareToIgnoreCase(string2));
System.out.println(string1.compareToIgnoreCase(string3));
}
}
JavaObserve a diferença no resultado:
0
0
JavaOperador Java ==
Como mencionado, você também pode usar o operador ==
para comparar duas strings em Java. Ele compara as referências e não os valores reais. Também vamos ilustrar a situação com um exemplo:
public class Main {
public static void main(String[] args) {
String string1 = "Esta é uma string";
String string2 = "Esta é uma string";
String string3 = new String ("Esta é uma string");
System.out.println(string1==string2);
System.out.println(string1==string3);
}
}
JavaComo string1
e string2
referenciam a mesma instância, a saída é “true”. A string3
, por outro lado, é criada por new String()
, o que força a criação de uma nova instância, enquanto string1
e string2
são literais de string, referenciando a mesma instância no pool. Assim, a saída de string3
é “false”, embora o valor dentro das strings seja idêntico.
true
false
Java