No exercício 4, do treinamento Primeiros Passos/começando com Orientação a objetos, foi solicitado que fosse criado dois objetos e comparasse utilizando o comando abaixo :
if (f1 == f2) { System.out.println("iguais"); } else { System.out.println("diferentes"); }
No meu exemplo criei dois objetos com valores iguais, mas o resultado imprimiu "Diferentes" em vez de "iguais".
De Acordo com a explicação do instrutor sempre vai dar diferente, pois as variáveis só guardam as referências. Eu não entendi, pois os parâmetros foram inicializados com o mesmo valor.
Obrigado !!
Opinião do instrutor
Em ambos os casos, temos false como resposta. Isso é porque variáveis guardam apenas as referências! Por mais que dois objetos diferentes tenham as mesmas informações, cada um deles é um objeto à parte.
Você pode ver isso de uma forma simples: se você alterar o f1, note que o f2 não é alterado junto. Cada um é um objeto diferente e cada variável (f1 e f2) referencia um deles.