Comparar Strings em Java

K. Macharia 12 outubro 2023
  1. Compare Strings em Java usando o método compareTo()
  2. O método do operador de igualdade ==
  3. O método equals()
  4. O método equals() Sensibilidade a maiúsculas e minúsculas
  5. O método contentEquals()
Comparar Strings em Java

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.

  1. 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.
  2. 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:

  1. O método compareTo()
  2. O operador de igualdade ==
  3. O método equals()
  4. 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.

  1. O resultado é zero quando as duas strings comparadas são iguais lexicograficamente.
  2. O resultado é positivo se a primeira string for maior do que a segunda string.
  3. 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

Artigo relacionado - Java String