Não se deve comparar objetos com o operador == a não ser que queira exatamente a mesma referencia.
O operador == compara endereços de memória, e como você instancia 2 contas, o endereço de cada uma não vai ser o mesmo.
Mesmo os 2 objetos tendo os atributos com o mesmo valor, isso não significa que eles são os mesmos, você precisa definir parâmetros de igualdade.
você precisa de um método que compare as instâncias de acordo com parâmetros definidos por você. leia sobre o método equals()
[quote=andrestrife][code]public class IgualdadeContas {
public static void main (String args[]){
Conta c1 = new Conta();
c1.dono = “Joe”;
c1.saldo = 200;
Conta c2 = new Conta();
c2.dono = "Joe";
c2.saldo = 200;
if(c1 == c2){
System.out.println("Contas iguais");
}
}
}[/code]
Aparentemente, não aponta nenhum erro, mas não consigo visualizar a imagem quando executo o programa.[/quote]
Dessa forma você está comparando referencias da memória ou seja se c1 está apontando para o mesmo campo de memoria de c2 e como você deu um new logo foi criado outra referencia e para comparar o conteúdo você deve utilizar o .equals().
Não exatamente, o que você está perguntando com seu código, não é se os bolos são iguais, mas se os bolos são o mesmo bolo, entende?
por exemplo: seu bolo pode ter atributos como, ingredientes, tempo no forno, etc.
teoricamente, se um bolo tiver os mesmos ingredientes, e tiver o mesmo tempo no forno, eles serão iguais, mas não serão o mesmo.
O que você precisa fazer com o equals() é dizer que você quer que ele seja comparado pelos atributos.
Acho que todas as IDEs geram o equals() pra você de uma forma ou de outra, mas é importante você entender como ele funciona.