Equals e objeto

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);
    }
}

Obrigado.

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

desculpa,
o caso 2 também seria Falso.

com o operador == ele compara a posicao na memoria

mas com equals ele compara o conteúdo do objeto, eu axo q eh isso

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.

A implementação para qualquer classe que voce criar é a seguinet:

public boolean equals(Object obj) {
        
        if (obj instanceof EqualsTotal) {
            return true;
        }else {
            return false;
        }
                   
    }

[code]public static void main(String[] args) {

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 “” :wink:
mas no segundo caso:
s1 value: char[0] (id = 20)
s2 value: char[0] (id = 22)

Obrigado,
Pessoal, entendi !!