Como comparar duas Strings em Java
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 Java, você pode usar os métodos fornecidos pelas seguintes classes.
- Classe de string do JavaPacote .lang.
- Classe de objetos do JavaPacote .util.
- Classe StringUtils do pacote org.apache.commons.lang3.
A maioria destes Java Os métodos compare strings têm soluções para ignorar o caso. Nesta Java tutorial, você aprenderá os diferentes métodos que você pode usar para comparar duas strings.
Método 1: método String equals()
A 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.
Note: use o método string equals para comparação de strings com distinção entre maiúsculas e minúsculas. Use o método “equalsIgnoreCase” para comparar objetos string com diferentes valores de string.
Método 2: Método de objetos equals()
A 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, pois as strings comparadas são iguais.
Método 3: método String compareTo()
A 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 um valor zero, pois a primeira e a segunda strings são iguais.
O segundo resultado retorna um valor trinta e dois, pois os caracteres são diferentes.
Nota: Para ignorar os casos, você pode usar o método “compareToIgnoreCase”.
Método 4: método StringUtils equals()
A 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” em seu programa. Isso permitirá que você compare strings usando os métodos StringUtil.
Para projetos Maven, use isto guia para adicionar a biblioteca ao projeto.
No entanto, se você quiser adicionar a biblioteca sem nenhuma ferramenta de construção, use este guia.
Sintaxe:
public static boolean equals(CharSequnce 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 da string for igual. Aplica-se 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()
A 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 pesquisa. Isso se aplica 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, a string compartilha um endereço.
- O segundo resultado retorna um valor booleano falso. Os objetos possuem conteúdos diferentes, o que resulta em outros conjuntos de strings. Isso significa que as strings possuem referências de objetos 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.
Resumo:
A Java O método de comparação de duas strings a ser usado depende dos seguintes fatores.
- Desejo de ter controle sobre seu método. Nesse caso, crie um método personalizado.
- Você não pode usar código legado. com Java 6 e inferior.
- O método que tem desempenho ideal.
- O tipo de dados com os quais você está trabalhando. Por exemplo, combinando uma string de um conjunto de argumentos variáveis.
- Os recursos fornecidos pela biblioteca terceirizada. Por exemplo, a biblioteca StringUtils fornece vários métodos para comparar strings.