Menu
Coddy logo textTech

String Comparison

Parte da seção Fundamentos do Journey de Java da Coddy — lição 70 de 73.

Em Java, comparar strings não é tão direto quanto comparar tipos de dados primitivos como inteiros ou caracteres. Você não pode usar o operador == para comparar strings quanto à igualdade porque strings são objetos, e == compararia seus endereços de memória, não seus conteúdos. Em vez disso, você precisa usar métodos específicos fornecidos pela classe String para comparar os caracteres reais dentro das strings.

Aqui estão os métodos principais para comparação de strings:

  • equals(Object other): Compara a string com outro objeto (geralmente outra string). Retorna true se as strings tiverem os mesmos caracteres na mesma ordem, false caso contrário. Este método é sensível a maiúsculas e minúsculas.
  • equalsIgnoreCase(String other): Similar ao equals, mas ignora maiúsculas e minúsculas. Retorna true se as strings tiverem os mesmos caracteres, independentemente de suas maiúsculas e minúsculas, false caso contrário.
  • compareTo(String other): Compara duas strings lexicograficamente (com base em seus valores Unicode). Retorna 0 se as strings forem iguais, um número negativo se a primeira string for menor que a segunda, e um número positivo se a primeira string for maior que a segunda. Este método é sensível a maiúsculas e minúsculas.
  • compareToIgnoreCase(String other): Semelhante ao compareTo, mas ignora maiúsculas e minúsculas.

Aqui está um exemplo:

String str1 = "hello";
String str2 = "hello";
String str3 = "HELLO";
String str4 = "world";

boolean eq1 = str1.equals(str2); // verdadeiro
boolean eq2 = str1.equals(str3); // falso
boolean eq3 = str1.equalsIgnoreCase(str3); // verdadeiro

int cmp1 = str1.compareTo(str2); // 0
int cmp2 = str1.compareTo(str4); // valor negativo
int cmp3 = str4.compareTo(str1); // valor positivo
int cmp4 = str1.compareToIgnoreCase(str3); // 0
challenge icon

Desafio

Fácil

Crie um método chamado compareStrings que recebe duas strings como entrada e realiza as seguintes comparações:

  1. Verifica se as duas strings são iguais usando equals e imprime o resultado.
  2. Verifica se as duas strings são iguais (ignorando maiúsculas e minúsculas) usando equalsIgnoreCase e imprime o resultado.
  3. Compara as duas strings usando compareTo e imprime o resultado.
  4. Compara as duas strings (ignorando maiúsculas e minúsculas) usando compareToIgnoreCase e imprime o resultado.

Exemplo de saída para as strings de entrada HELLO e hello:

HELLO equals hello: false
HELLO equalsIgnoreCase hello: true
HELLO compareTo hello: -32
HELLO compareToIgnoreCase hello: 0

Folha de consulta

Em Java, use métodos específicos para comparar strings, não o operador == que compara endereços de memória:

  • equals(Object other): Comparação de igualdade sensível a maiúsculas e minúsculas
  • equalsIgnoreCase(String other): Comparação de igualdade insensível a maiúsculas e minúsculas
  • compareTo(String other): Comparação lexicográfica sensível a maiúsculas e minúsculas (retorna 0 se igual, negativo se primeiro < segundo, positivo se primeiro > segundo)
  • compareToIgnoreCase(String other): Comparação lexicográfica insensível a maiúsculas e minúsculas
String str1 = "hello";
String str2 = "HELLO";

boolean eq1 = str1.equals(str2); // false
boolean eq2 = str1.equalsIgnoreCase(str2); // true

int cmp1 = str1.compareTo(str2); // positive value
int cmp2 = str1.compareToIgnoreCase(str2); // 0

Experimente você mesmo

import java.util.Scanner;

public class Main {
    public static void compareStrings(String str1, String str2) {
        // Escreva seu código aqui
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str1 = scanner.nextLine();
        String str2 = scanner.nextLine();
        compareStrings(str1, str2);
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos