Pessoal,
Tenho a seguinte situação, e fiquei confuso quanto ao resutado encontrado, pois para mim ambos são objetos. Logo a resposta para ambas as situações teriam que ser False, o que não ocorre no caso 1.
Alguem poderia me explicar melhor.
classEqualsTotal{publicstaticvoidmain(String[]args){EqualsTotale=newEqualsTotal();EqualsTotale2=newEqualsTotal();booleant=e.equals(e2);System.out.println(" compara objeto : os objetos sao : "+t);System.out.println("................ ");Stringa=newString();Stringa2=newString();booleant2=a.equals(a2);System.out.println(" compara objeto : os objetos sao : "+t2);}}
Alguem por gentileza me questione se estiver errado… estou dizendo o que acho.
tipo vc verificar se um objeto é igual ao outro não da certo, porque quando você instancia os objetos cada um tem uma referencia diferente na memória heap. Assim voce nao consegue comparar objetos… voce só consegue comparar os valores dos atributos…
Acho que é isso
W
Wilhans
desculpa,
o caso 2 também seria Falso.
Hammer
com o operador == ele compara a posicao na memoria
mas com equals ele compara o conteúdo do objeto, eu axo q eh isso
neohacker
Não compreendi muito bem o q vc disse…ambos teriam que dar false e não dão ??
pra mim o 2º caso concerteza daria true !!
estou pensando porque o 1º está dando false porque pra mim daria true…
vo tentar entender o q ocorre
rodrigus
Se você cria uma classe voce deve criar o método ‘equals’ senão ele não fará comparação alguma. No String funciona pois já está implementado na classe java.lang.String.
rodrigus
A implementação para qualquer classe que voce criar é a seguinet:
Explicação:
as duas String's tem o valor "", só q cada uma tem um endereço diferente na memoria!.. por isso o primeiro caso da true! "" é igual a "" ;)
mas no segundo caso:
s1 value: char[0] (id = 20)
s2 value: char[0] (id = 22)