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.
class EqualsTotal{
public static void main(String [] args)
{
EqualsTotal e = new EqualsTotal();
EqualsTotal e2 = new EqualsTotal();
boolean t = e.equals(e2);
System.out.println(" compara objeto : os objetos sao : " + t);
System.out.println("................ ");
String a = new String();
String a2 = new String();
boolean t2 = 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…
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
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.
String s1 = new String();
String s2 = new String();
System.out.print(s1.equals(s2));
System.out.print("\n" + s1 == s2);
}[/code]
resultado:
[quote]true
false[/quote]
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)