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 com­pa­ra­ções.

Como comparar strings em Java?

Embora você possa comparar tipos de dados pri­mi­ti­vos em Java fa­cil­mente com o operador Java ==, fazer isso com strings em Java é um pouco mais com­pli­cado. Embora você possa usar o operador ==, ele não comparará o conteúdo das strings, mas apenas a re­fe­rên­cia ao objeto. Isso pode ser su­fi­ci­ente ou desejável em alguns casos, mas em outros, você precisará de um método diferente para obter o resultado desejado. Fe­liz­mente, a linguagem de pro­gra­ma­ção oferece várias opções. As três mais comuns e práticas são:

  • Java equals()
  • Java compareTo() para strings
  • Operador Java ==
Hos­pe­da­gem que se adapta às suas ambições
  • Fique online com 99,99% de tempo de atividade e segurança robusta
  • Aumente o de­sem­pe­nho com um clique à medida que o tráfego cresce
  • Inclui domínio gratuito, SSL, e-mail e suporte 24 horas por dia, 7 dias por semana

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 di­fe­ren­tes. A sintaxe do método é:

public boolean equals(objeto1 objeto2)
Java

O fun­ci­o­na­mento desse método pode ser mais bem ilustrado com um exemplo simples. Para isso, criamos três strings e com­pa­ra­mos 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 exe­cu­tar­mos 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 se­me­lhan­tes à 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 le­xi­co­gra­fi­ca­mente com base no valor Unicode dos ca­rac­te­res in­di­vi­du­ais em uma string. Os ca­rac­te­res são com­pa­ra­dos 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 fun­ci­o­na­li­dade é explicada através de um exemplo simples. Criamos novamente três strings e com­pa­ra­mos 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 exe­cu­tar­mos 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 di­fe­ren­ci­a­ções entre maiús­cu­las e mi­nús­cu­las, 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 men­ci­o­nado, você também pode usar o operador == para comparar duas strings em Java. Ele compara as re­fe­rên­cias 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 re­fe­ren­ciam 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, re­fe­ren­ci­ando 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
Ir para o menu principal