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 ==
Hospedagem web com consultor pessoal

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)
Java

O 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));
	}
}
Java

Se executarmos esse código com o comando Java System.out.println, obteremos o seguinte resultado:

true
false
Java

A 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)
Java

A 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));
	}
}
Java

Ao executarmos este código com System.out.println, obtemos o seguinte:

0
-20
Java

Se 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));
	}
}
Java

Observe a diferença no resultado:

0
0
Java

Operador 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);
	}
}
Java

Como 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
Este artigo foi útil?
Para melhorar a sua experiência, este site usa cookies. Ao acessar o nosso site, você concorda com nosso uso de cookies. Mais informações
Page top