🔍 Curiosidade Java: Sabia que o == e o .equals() nem sempre fazem a mesma coisa?

E aí, pessoal! 👨‍💻
Hoje trago uma curiosidade bem interessante (e traiçoeira!) do Java que confunde muita gente — inclusive eu já tropecei nela quando estava começando: a diferença entre == e .equals() para comparar objetos.


📌 O que parece ser… nem sempre é!

No Java, se você quiser comparar dois valores, instintivamente pode usar o operador ==. E ele realmente funciona — mas só quando estamos lidando com tipos primitivos, como int, char, boolean, etc.

Por exemplo:

Nesse caso, o resultado é true, porque estamos comparando valores literais.


🤯 Mas olha o que acontece com objetos:

Por quê?

  • O == está comparando as referências (endereços de memória).

  • O .equals() está comparando os conteúdos dos objetos.

Então, mesmo que os textos sejam idênticos, como estamos criando dois objetos diferentes com new, eles vão ocupar posições diferentes na memória — daí o == retorna false.


📸 Sugestão de imagem:

Imagem gerada
"Dois copos iguais, mas em prateleiras diferentes — mesma aparência, endereços diferentes."


🧠 Dica bônus: o pool de Strings

Se você usar literais de String, o Java guarda essas Strings em um "pool". Ou seja, reutiliza os objetos em vez de criar novos.

Como os dois apontam para o mesmo objeto na memória, o == funciona.


📸 Sugestão de imagem:

Imagem gerada
"nome1 e nome2 compartilhando o mesmo objeto 'Marcio' no pool de Strings."


🚨 Conclusão

Sempre que estiver comparando objetos no Java, use .equals()a não ser que você realmente queira saber se são o mesmo objeto em memória.

Essa é uma daquelas curiosidades que parecem bobas, mas que podem gerar bugs difíceis de rastrear.

Já caiu nessa armadilha alguma vez? Comenta aí! 💬

Comentários

Postagens mais visitadas deste blog

🌀 Loop for-each em Java: Simplificando a Iteração

👷‍♂️ Código em Construção: Começando do Começo

🔄 Sobrecarga de Métodos em Java: Como Funciona na Prática