Compare two String objects by using the compareTo and equals methods

Em Java, a comparação de strings pode ser feita usando os métodos compareTo e equals. Vamos ver como esses métodos funcionam:

Método compareTo:

O método compareTo da classe String compara duas strings lexicograficamente (ou seja, em ordem alfabética). Ele retorna um valor negativo se a string atual precede a string passada como argumento, um valor positivo se a string atual segue a string passada e zero se as strings são iguais.

String str1 = "apple";
String str2 = "banana";

int resultado = str1.compareTo(str2);

if (resultado < 0) {
    System.out.println("str1 vem antes de str2");
} else if (resultado > 0) {
    System.out.println("str1 vem depois de str2");
} else {
    System.out.println("str1 e str2 são iguais");
}

Método equals:

O método equals compara o conteúdo de duas strings, verificando se elas têm os mesmos caracteres na mesma ordem.

String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");

boolean resultado1 = str1.equals(str2); // true
boolean resultado2 = str1.equals(str3); // true

System.out.println("Resultado 1: " + resultado1);
System.out.println("Resultado 2: " + resultado2);

Neste exemplo, resultado1 será true porque str1 e str2 têm o mesmo conteúdo. resultado2 também será true, pois mesmo sendo criado com new String(), o conteúdo de str3 é igual ao de str1.

Em resumo, use compareTo para determinar a ordem lexicográfica entre duas strings e equals para verificar se duas strings têm o mesmo conteúdo. Lembre-se de que, ao usar equals, você está comparando o conteúdo, não as referências de objetos.