CB

Cristiano Bonifácio28/08/2026 19:36
Compartilhe

Java para iniciantes: equals() ou ==? Entendendo a comparação de Strings

    Java para iniciantes: equals() ou ==? Entendendo a comparação de Strings

    Durante meus primeiros desafios de Java na DIO, encontrei exercícios aparentemente simples: ler uma informação, comparar textos e tomar uma decisão usando if e else.

    Apesar de serem desafios básicos, eles trazem um conceito muito importante para quem está começando em Java: a diferença entre equals() e == na comparação de Strings.

    Resolvi compartilhar esse aprendizado porque esse é um daqueles detalhes que parecem pequenos no começo, mas podem gerar bastante confusão para quem está aprendendo.

    O problema

    Imagine que precisamos verificar se um código de operação bancária é válido.

    Por exemplo, o sistema aceita:

    DEPOSITO

    SAQUE

    TRANSFERENCIA

    Podemos receber uma informação do usuário utilizando Scanner:

    Scanner scanner = new Scanner(System.in);

    String operacao = scanner.nextLine();

    Agora precisamos verificar se o texto digitado corresponde a uma das opções permitidas.

    Uma forma correta seria:

    if (operacao.equals("DEPOSITO")) {

      System.out.println("VALID");

    }

    Aqui aparece o método equals().

    O que faz o equals()?

    De forma simples, quando usamos:

    operacao.equals("DEPOSITO")

    estamos perguntando:

    O conteúdo de operacao é exatamente igual ao texto "DEPOSITO"?

    Se for, o resultado será true.

    Se não for, será false.

    Por exemplo:

    String codigo = "AG123";

    System.out.println(codigo.equals("AG123"));

    Resultado:

    true

    Mas:

    String codigo = "AG123";

    System.out.println(codigo.equals("AG124"));

    Resultado:

    false

    E onde entra o ==?

    É aqui que pode surgir uma dúvida comum para quem está começando.

    Em Java, == é usado para comparar valores de tipos primitivos, como:

    int idade = 20;

    if (idade == 20) {

      System.out.println("Idade correta");

    }

    Porém, String é um objeto.

    Quando usamos == com objetos, estamos verificando se as referências apontam para o mesmo objeto, e não fazendo a comparação de conteúdo da forma que normalmente queremos.

    Por isso, para comparar o conteúdo de duas Strings, devemos utilizar:

    String codigo1 = "AG123";

    String codigo2 = "AG123";

    if (codigo1.equals(codigo2)) {

      System.out.println("Os códigos são iguais");

    }

    Essa é uma regra importante para quem está começando:

    Para comparar o conteúdo de Strings em Java, utilize equals().

    Um exemplo parecido com os desafios

    Um dos exercícios pode ser resolvido assim:

    import java.util.Scanner;

    public class Main {

      public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        String codigoInformado = scanner.nextLine();

        String codigoEsperado = scanner.nextLine();

        if (codigoInformado.equals(codigoEsperado)) {

          System.out.println("ACESSO LIBERADO");

        } else {

          System.out.println("ACESSO NEGADO");

        }

        scanner.close();

      }

    }

    Se a entrada for:

    AG123

    AG123

    a saída será:

    ACESSO LIBERADO

    Se a entrada for:

    AG123

    AG124

    a saída será:

    ACESSO NEGADO

    Maiúsculas e minúsculas também importam

    Outro ponto interessante dos desafios foi perceber que equals() faz uma comparação exata.

    Por exemplo:

    String codigo = "BANCO01";

    System.out.println(codigo.equals("BANCO01"));

    Resultado:

    true

    Mas:

    System.out.println(codigo.equals("banco01"));

    Resultado:

    false

    Ou seja, BANCO01 e banco01 são considerados diferentes.

    Isso é importante em situações nas quais a regra exige que os caracteres sejam exatamente iguais.

    equalsIgnoreCase()

    Java também possui:

    equalsIgnoreCase()

    Ele permite comparar Strings ignorando diferenças entre letras maiúsculas e minúsculas.

    Por exemplo:

    String codigo = "BANCO01";

    if (codigo.equalsIgnoreCase("banco01")) {

      System.out.println("Iguais");

    }

    Nesse caso, o resultado será:

    Iguais

    Mas é importante não usar equalsIgnoreCase() quando o exercício exige uma comparação exata.

    O que aprendi com esses desafios?

    O mais interessante desses exercícios foi perceber que desafios simples podem ensinar conceitos fundamentais.

    No começo, podemos pensar:

    "É só comparar duas palavras."

    Mas por trás disso estamos praticando:

    Entrada de dados com Scanner;

    Variáveis do tipo String;

    Comparação de textos;

    equals();

    Diferença entre equals() e ==;

    if e else;

    Operadores lógicos como ||;

    Sensibilidade a maiúsculas e minúsculas.

    Esses conceitos aparecem constantemente em programas maiores.

    Conclusão

    Para quem está começando Java, minha principal dica depois desses exercícios é: não passe pelos desafios apenas tentando fazer o código funcionar.

    Tente entender por que determinada solução funciona.

    No meu caso, um exercício simples de validação de códigos acabou ajudando a entender melhor uma diferença importante da linguagem:

    string1.equals(string2)

    é utilizado para comparar o conteúdo de Strings.

    Já:

    string1 == string2

    não deve ser usado como regra geral para verificar se duas Strings possuem o mesmo conteúdo.

    É um detalhe pequeno, mas entender esses fundamentos desde o início evita muitos problemas no futuro.

    E você, quando começou a estudar Java, também teve dúvida entre equals() e ==?

    Compartilhe sua experiência nos comentários. Pode ser que a sua dúvida ou explicação ajude outro iniciante que esteja passando pelo mesmo desafio.

    Compartilhe
    Comentários (0)