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.