Comparar Strings em Java
-
Compare Strings em Java usando o método
compareTo()
-
O método do operador de igualdade
==
-
O método
equals()
-
O método
equals()
Sensibilidade a maiúsculas e minúsculas -
O método
contentEquals()
Quase todos os desenvolvedores Java, em algum momento, precisarão comparar duas strings para completar a lógica de um aplicativo. Uma variável de string é uma coleção de caracteres. Para entender as operações de comparação possíveis com uma string, primeiro precisamos entender as propriedades de uma string.
- Strings são imutáveis. Isso significa que eles não podem crescer e qualquer mudança em um fio leva à formação de um novo fio. Isso ocorre porque eles são apoiados internamente por arrays de caracteres que são imutáveis.
- Sempre que dizemos que uma string é criada, dois objetos colocados em áreas de memória diferentes são criados. Um é criado na área de heap, enquanto o segundo é criado no conjunto de constantes String. A referência da string aponta a máquina em direção ao objeto da área de heap.
Por exemplo,
String mystring = "World"
Nesse caso, mystring
aponta para a área de heap onde a string World
está armazenada.
Abaixo estão os quatro métodos usados para comparar strings em java e são explicados em detalhes neste artigo:
- O método
compareTo()
- O operador de igualdade
==
- O método
equals()
- O método
contentEquals()
Compare Strings em Java usando o método compareTo()
Ele compara duas strings lexicograficamente. Ele funciona primeiro atribuindo a cada caractere na string um valor Unicode e, em seguida, comparando as strings. Este processo retorna o resultado como zero, um número positivo ou um número negativo.
- O resultado é zero quando as duas strings comparadas são iguais lexicograficamente.
- O resultado é positivo se a primeira string for maior do que a segunda string.
- O resultado é negativo quando a segunda string é maior do que a primeira string.
Existem duas maneiras de usar o método compareTo()
.
Compare dois literais de cordas
Vamos comparar string1 e string2. O resultado que obtemos da comparação dessas duas strings é um tipo int
. Exemplo:
public class CompareToCode {
public static void main(String args[]) {
String string1 = "now";
String string2 = "now";
int result = string1.compareTo(string2);
System.out.println(result);
}
}
Resultado:
0
Compare uma string e um objeto
O método compareTo()
também permite a comparação de objetos não referenciados com uma string. Exemplo:
public class CompareTo {
public static void main(String args[]) {
String string1 = "now";
int result = string1.compareTo("now");
System.out.println(result);
}
}
Resultado:
0
compareTo()
Sensibilidade a maiúsculas e minúsculas
O método compareTo()
diferencia maiúsculas de minúsculas. Isso significa que mesmo que duas strings sejam iguais, ele as mostrará como diferentes se não forem uniformes. Exemplo:
public class CompareTo {
public static void main(String args[]) {
String string1 = "hello";
String string2 = "HELLO";
int result = string1.compareTo(string2);
System.out.println(result);
}
}
Resultado:
-32
O mundo hello
e HELLO
são tratados de forma diferente do anterior, e assim obtemos um resultado de -32.
No entanto, outro método nesta classe de string ignora a distinção entre maiúsculas e minúsculas - compareToIgnoreCase()
. Exemplo:
public class CompareToIgnoreCase {
public static void main(String args[]) {
String string1 = "hello";
String string2 = "HELLO";
int result = string1.compareToIgnoreCase(string2);
System.out.println(result);
}
}
Resultado:
0
O método do operador de igualdade ==
É um método de comparação de string java que compara se dois objetos estão no mesmo local de memória. Exemplo:
public class EqualityOperator {
public static void main(String args[]) {
String oneS = new String("Wow");
String twoS = new String("Wow");
System.out.println(oneS == twoS);
}
}
Resultado:
false
O operador ==
compara objetos umS e doisS para verificar se eles são iguais. Ambas as Strings, oneS
e twoS
são referências diferentes e, portanto, retornam falso. oneS
e twoS
são dois objetos diferentes. No entanto, ambos têm o mesmo valor.
O método equals()
Este é um método usado para comparar duas strings em java com base em seu valor. A saída desse método é verdadeira ou falsa. Se as strings que estão sendo comparadas não forem iguais pelo valor, o método retornará falso. Se as strings que estão sendo comparadas forem iguais, o método retornará verdadeiro. Por exemplo,
public class Equals {
public static void main(String args[]) {
String oneS = new String("Wow");
String twoS = new String("Wow");
System.out.println(oneS.equals(twoS));
}
}
Resultado:
true
O método equals()
Sensibilidade a maiúsculas e minúsculas
O método equals()
diferencia maiúsculas de minúsculas e, portanto, vê as mesmas palavras limitadas de maneira diferente como palavras diferentes. Por exemplo:
public class Equals {
public static void main(String args[]) {
String oneS = new String("Wow");
String twoS = new String("WOW");
System.out.println(oneS.equals(twoS));
}
}
Resultado:
false
No caso acima, wow
em comparação com WOW
usando o método equals()
retorna falso.
No entanto, se você quiser usar o método equals()
e não considerar a distinção entre maiúsculas e minúsculas, use o método equalsToIgnoreCase()
. Para o exemplo acima, equalsIgnoreCase()
retornaria verdadeiro.
public class EqualsIgnorecase {
public static void main(String args[]) {
String oneS = new String("Wow");
String twoS = new String("WOW");
System.out.println(oneS.equalsIgnoreCase(twoS));
}
}
Resultado:
true
O método contentEquals()
Este também é um método de comparação de string java que compara um buffer de string e uma string e retorna false
ou true
. Se a string corresponder ao buffer de string com o qual está sendo comparada, o método retorna true
. Se a string não corresponder ao buffer de string com o qual está sendo comparada, o método retorna false
.
Exemplo:
public class ContentEquals {
public static void main(String args[]) {
String firstS = new String("Here we are");
StringBuffer secondS = new StringBuffer("Here we are");
System.out.println(firstS.contentEquals(secondS));
}
}
Resultado:
true