Como comparar duas Strings em Java
⚡ Resumo Inteligente
Comparando duas strings em Java É possível realizar essa comparação com diversos métodos que verificam a igualdade ou a ordem de uma sequência de caracteres. Este recurso explica sete abordagens, incluindo os métodos `equals` de `String`, `equals` de `Object`, `compareTo`, métodos da classe `StringUtils`, o operador `==` e um método de comparação personalizado, cada um com exemplos.

Métodos para comparar strings em Java
Java fornece métodos diferentes que você pode aproveitar para comparar duas strings em Java. Comparação de strings em Java é um recurso que combina uma sequência de caracteres com uma string.
Para aprender como comparar strings em JavaVocê pode usar os métodos fornecidos pelas seguintes classes:
- Classe String do pacote java.lang.
- Classe Objects do pacote java.util.
- Classe StringUtils do pacote org.apache.commons.lang3.
A maioria destes Java Os métodos de comparação de strings possuem soluções para ignorar maiúsculas e minúsculas. Neste tutorial, você aprenderá os diferentes métodos que podem ser usados para comparar duas strings.
Método 1: método String equals()
O Java Tanga método equals () compara dois objetos string para valores de string iguais.
Sintaxe:
public boolean equals(Object anObject)
Parâmetros do método equals():
anObject – A string de argumento para comparar strings.
tipos de retorno do método equals()
- Retorna verdadeiro se a string literal fornecida for igual à primeira string.
- Retorna falso se a primeira string não for igual à string do argumento.
Exemplo:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree));
}
}
Resultado esperado:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Explicação:
- Você obteve falso na última saída porque o objeto especificado possui um caso diferente.
Observação: Use o método `equals()` da classe `string` para comparar strings diferenciando maiúsculas de minúsculas. Use o método `equalsIgnoreCase` para comparar objetos do tipo `string` ignorando maiúsculas e minúsculas.
Método 2: Método de objetos equals()
O Java Objetos são iguais() O método compara dois objetos string para descobrir se eles têm os mesmos valores.
Sintaxe:
public static boolean equals(Object a, Object b)
parâmetros do método equals()
a – String de argumento para o primeiro objeto string.
b – String de argumentos para o segundo objeto string.
tipos de retorno do método equals()
- Retorna verdadeiro se os literais da string forem iguais. Passar um valor nulo nos dois argumentos também retornará verdadeiro.
- Retorna falso se os literais da string não forem iguais.
Exemplo:
import java.util.Objects; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo)); String stringThree = null; String stringFour = null; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour)); } }
Saída:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Explicação:
Neste exemplo, você pode ver que a saída é um valor booleano verdadeiro, já que as strings comparadas são iguais.
Método 3: método String compareTo()
O Java String compararTo() O método compara duas strings em ordem alfabética. Geralmente é chamada de ordem lexicográfica.
Sintaxe:
public int compareTo(String str)
Parâmetros do método compareTo()
str – A string a ser comparada com a string atual.
O método compareTo() retorna
- 0 – Retorna zero se o objeto especificado for igual à string atual.
- < 0 – Retorna um número menor que zero se esta string for menor que o objeto especificado.
- > 0 – Retorna um número maior que zero se esta string exceder a string fornecida.
Exemplo:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo));
String stringThree = "GURU99";
// u = 117, U = 85, result = 117-85 = 32
System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree));
}
}
Resultado esperado:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Explicação:
O primeiro resultado retorna o valor zero, já que a primeira e a segunda strings são iguais.
O segundo resultado retorna o valor trinta e dois, já que os caracteres são diferentes.
Observação: Para ignorar maiúsculas e minúsculas, você pode usar o método “compareToIgnoreCase”.
Método 4: método StringUtils equals()
O Java StringUtils é igual() O método compara a igualdade de duas sequências de caracteres.
Certifique-se de ter adicionado a biblioteca “org.apache.commons.lang3” ao seu programa. Isso permitirá que você compare strings usando os métodos da classe StringUtils.
Para projetos Maven, use isto guia para adicionar a biblioteca ao projeto.
No entanto, se você quiser adicionar a biblioteca sem usar nenhuma ferramenta de compilação, use este método. guia.
Sintaxe:
public static boolean equals(CharSequence cs1, CharSequence cs2)
Parâmetros do método StringUtils equals()
- cs1 – Uma sequência de caracteres para o primeiro argumento.
- cs2 – Uma sequência de caracteres para o segundo argumento.
O método StringUtils equals() retorna
- Retorna verdadeiro se a comparação entre as strings resultar em igualdade. Isso também se aplica se você passar um valor nulo nos dois argumentos.
- Retorna falso se a comparação da string não for igual.
Exemplo:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree)); } }
Saída:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Explicação:
Como o conteúdo da primeira e da segunda string é igual, o resultado retorna verdadeiro.
Você pode usar o método “equalsIgnoreCase” para ignorar o caso.
Método 5: método StringUtils equalsAny()
O Java StringUtils é igual aAny() O método verifica se existe uma string nos argumentos.
Sintaxe:
public static boolean equalsAny(CharSequence string, CharSequence... searchStrings)
Parâmetros do método StringUtils equalsAny()
- string – O valor da string para o primeiro argumento. O argumento também pode ter um valor nulo.
- searchStrings – Um conjunto de argumentos de string para o método descobrir se a primeira string de argumento está presente.
O método StringUtils equalsAny() retorna
- Retorna verdadeiro se a string a ser correspondida existir no número variável de strings de busca. Isso se aplica mesmo se ambos os argumentos forem nulos.
- Retorna falso se a string a ser correspondida não corresponder a nenhuma string no número variável de strings de pesquisa.
Exemplo:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String[] stringTwo = new String[] { "Guru99", "JavaGuru99" }; System.out.println("is Guru99 available: " + StringUtils.equalsAny(stringOne, stringTwo)); String[] stringThree = new String[] { "GURU99", "JavaGuru99" }; System.out.println("is GURU99 available: " + StringUtils.equalsAny(stringOne, stringThree)); } }
Saída:
is Guru99 available: true is GURU99 available: false
Explicação:
Como o conteúdo da primeira e da segunda string são iguais, o resultado retorna verdadeiro. Você pode usar o método “equalsAnyIgnoreCase” para ignorar o caso.
Método 6: usando o operador ==
O operador == em strings verifica se as referências de objetos têm o mesmo endereço.
Exemplo:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree));
}
}
Resultado esperado:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Explicação:
- O primeiro resultado retorna um valor booleano verdadeiro. Strings com o mesmo conteúdo são adicionadas ao mesmo conjunto de strings, portanto, as strings compartilham o mesmo endereço.
- O segundo resultado retorna um valor booleano falso. Os objetos têm conteúdos diferentes, o que resulta em conjuntos de strings diferentes. Isso significa que as strings têm referências de objeto separadas; portanto, a saída é falsa.
Método 7: Criando um método personalizado para comparar duas strings em Java
Crie um método que compare duas strings usando ordem lexicográfica.
Sintaxe:
public static int compareTwoStrings(String str1, String str2)
Parâmetros de método personalizado
- str1 – A string a ser comparada.
- str2 – A string com a qual comparar.
Retornos de métodos personalizados
- 0 – Retorna zero se a primeira string for igual à segunda string.
- < 0 – Retorna um número menor que zero se a primeira string for menor que a segunda string.
- > 0 – Retorna um número maior que zero se a primeira string for maior que a segunda string.
Exemplo:
public class CompareTwoStrings {
public static int compareTwoStrings(String stringOne, String stringTwo) {
int lengthOfStringOne = stringOne.length();
int lengthOfStringTwo = stringTwo.length();
int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo);
for (int i = 0; i < minStringLength; i++) {
char stringOneCharValue = stringOne.charAt(i);
char stringTwoCharValue = stringTwo.charAt(i);
if (stringOneCharValue != stringTwoCharValue) {
return stringOneCharValue - stringTwoCharValue;
}
}
if (lengthOfStringOne != lengthOfStringTwo) {
return lengthOfStringOne - lengthOfStringTwo;
} else {
return 0;
}
}
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo));
}
}
Resultado esperado:
is Guru99 equal to Guru99: 0
Explicação:
O resultado retornou um valor zero, significando que a função personalizada está funcionando conforme o esperado.
