Java - Instância?
Quando você instancia uma classe em Java, está criando um novo objeto, e esse objeto passa a ocupar um espaço próprio na memória, com seus atributos e comportamentos.
Exemplo:
Pense que você é um arquiteto. Você cria um projeto (classe) de uma casa: com quartos, janelas, portas, tudo definido no papel.
Mas até aí… ainda não existe nenhuma casa real, certo? Só o projeto.
Agora, quando você pega esse projeto e constrói a casa de verdade, nasce a instância — ou seja, o objeto.
Cada casa construída a partir do projeto ocupa um espaço físico, com suas próprias características (cor, mobília, moradores...). Da mesma forma, cada objeto em
Java ocupa um espaço de memória , com seus próprios valores.

Aqui, minhaCasa é um objeto criado a partir da classe Casa. Esse processo se chama instanciação, e agora minhaCasa existe na memória do computador, com suas próprias características.
Exemplo de duas casas criadas em pontos de memorias diferentes:

Agora temos duas casas separadas, com os mesmos valores, mas cada uma em um lugar diferente da memória. Elas são dois objetos distintos.
❌ Comparando instâncias diretamente

Mesmo que os atributos sejam idênticos, a saída será:

Porque == em Java, quando usado com objetos, compara se estão no mesmo endereço de memória, e não se têm os mesmos valores.
✅ Forma correta de comparar o conteúdo
Se quisermos comparar o conteúdo das duas casas, temos que sobrescrever o método equals na classe Casa ou comparar os atributos manualmente:
Comparando Atributos:

Resultado:

Sobrescrevendo o método equals na classe Casa:

Exemplo:

Com a sobrescrição do método equals, agora é possível comparar objetos que ocupam posições de memória distintas. Eles serão considerados iguais porque a comparação será feita com base no conteúdo e não no endereço de memória.




Tiago, você explicou o conceito de instância em Java com uma didática impecável. A analogia com o projeto da casa é uma das formas mais claras e acessíveis de ilustrar a diferença entre classe e objeto, e mostra o quanto dominar bem esses fundamentos é essencial para entender como o Java gerencia memória e estrutura de dados.
A parte sobre comparação de objetos também foi muito bem colocada. Muita gente que está começando se confunde ao usar == para comparar objetos e seu exemplo do método equals() deixa isso cristalino.
Qual tema fundamental você considera o próximo ideal para quem acabou de entender o conceito de instância?