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.
T
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.
fsfnit
Tecnoage:
== verifica o endereço de memória; obj.equals(outroObj); igualdade entre objetos.
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 ?
fsfnit
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.
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.
peerless
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.
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()!
N
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
T
thingol
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
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:
publicbooleanequals(Objectobj){
if(obj==this)returntrue;if(obj==null)returnfalse;if(obj.getClass()!=this.getClass())returnfalse; // note que "instanceof" não é suficiente na maior parte das vezes)return((Cliente)obj).getId().equals(this.getId());
}
gobbo
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
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 “==”
LPJava
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!
fsfnit
Vlw galera, é bom que não só tirou minha dúvida como explicaram legal como funciona no java essas comparações.
Vlw mesmo.