Posso Comparar Objeto com == ?[RESOLVIDO]

PEssoal, a dúvida é simples, é que ouvi dizer que em Java comparações de obj com ==, é comparação de ponteiro e que no caso tem que usar o obj.equals(null) verdade ou mentira ?

Pq tenho uma app onde tenho q validar se uma data é null, então estou fazendo if(data != null) {…}, pois se eu uso if (data.equals(null) ) me retorna null pointer exception. O que fazer neste caso ???
Vlw galera.

== verifica o endereço de memória;
obj.equals(outroObj); igualdade entre objetos.

Para comparar uma variável com null, use “==” mesmo.

É que muitas vezes as implementações de “equals” que você vê por aí não checam contra “null” e acabam lançando uma NullPointerException, o que é intolerável.

[quote=Tecnoage]== verifica o endereço de memória;
obj.equals(outroObj); igualdade entre objetos.[/quote]

Então o que faço quando tenho que comparar uma data com null? Pois com o equals, qdo a data é realmente nula, da exception.
O que eu faço ?

[quote=thingol]Para comparar uma variável com null, use “==” mesmo.

É que muitas vezes as implementações de “equals” que você vê por aí não checam contra “null” e acabam lançando uma NullPointerException, o que é intolerável.
[/quote]
Flw meu camarada, eu estava achando que estava fazendo um cóigo abominável, que seu postasse aqui iriam me tacar pedras. hehehe
Obrigadão.

[quote=fsfnit]PEssoal, a dúvida é simples, é que ouvi dizer que em Java comparações de obj com ==, é comparação de ponteiro e que no caso tem que usar o obj.equals(null) verdade ou mentira ?

Pq tenho uma app onde tenho q validar se uma data é null, então estou fazendo if(data != null) {…}, pois se eu uso if (data.equals(null) ) me retorna null pointer exception. O que fazer neste caso ???
Vlw galera.[/quote]

O ideal é que os objetos mantenham seu estado, assim você poderia comparar ela com o estado “NULO” dela, que seria: “00/00/0000” por ex.

Mas, como o colega falou. == compara se estão REFERENCIANDO o mesmo objeto. (Java não tem, não tem, NÃO TEM PONTEIROS!).
.equals compara o CONTEÚDO, o valor que representa o objeto. toString()!

“data” é uma variavel referencia para um objeto, se data == null a variavel não aponta para nenhum objeto, se data1 == data2, data1 e a data2 apontam para o msm objeto. Sua comparação é data == null mesmo que eu saiba equals é pra Strings.
abraço

[quote=nipo_style]“data” é uma variavel referencia para um objeto, se data == null a variavel não aponta para nenhum objeto, se data1 == data2, data1 e a data2 apontam para o msm objeto. Sua comparação é data == null mesmo que eu saiba equals é pra Strings.
abraço[/quote]

Aham, equals não é só para Strings. É para qualquer objeto de classes que implementem equals. Por exemplo, digamos que você tenha dois objetos da classe Cliente, e que você diga que “dois clientes são iguais se o código for o mesmo, desconsiderando os outros campos”. Aí você define equals como:

public boolean equals (Object obj) {
    if (obj == this) return true;
    if (obj == null) return false;
    if (obj.getClass() != this.getClass()) return false; // note que "instanceof" não é suficiente na maior parte das vezes)
    return ((Cliente)obj).getId().equals (this.getId());
}

[quote=nipo_style]“data” é uma variavel referencia para um objeto, se data == null a variavel não aponta para nenhum objeto, se data1 == data2, data1 e a data2 apontam para o msm objeto. Sua comparação é data == null mesmo que eu saiba equals é pra Strings.
abraço[/quote]

o metodo equals funciona para todos os objetos…
porem deve ser implementado (sobrescrito)
para os casos onde o metodo nao eh sobrescrito, sua funcionalidade eh a mesma do “==”

poder comparar pode porem nao em alguns casos nao vai obter o resultado que deseja… se usar == parar comparar objetos, vc nao vai receber nenhum erro.

O importante é saber o que vc quer comparar!

Vlw galera, é bom que não só tirou minha dúvida como explicaram legal como funciona no java essas comparações.
Vlw mesmo.