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.
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=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 “==”