Boa noite.
Tenho o seguinte código:
Character[] primeirasLetrasA = new Character[NUMERO_NOMES];
int tamanhoRealA = 0;
for (auxiliar = 0 ; auxiliar < primeirasLetrasA.length ; auxiliar++)
if(!primeirasLetrasA[auxiliar].equals(null))
tamanhoRealA += 1;
Estava primeiramente tratando “primeirasLetraA” como um array de char, mas não estava
conseguindo ver se estava vazio. Troquei então por Character, mas ao executar, está
dando NullPointerException nessa linha:
if(!primeirasLetrasA[auxiliar].equals(null))
O que está errado?
Muito obrigado a todos.
[quote=l.frias]
if(!primeirasLetrasA[auxiliar].equals(null))
O que está errado?
Muito obrigado a todos.[/quote]
if(primeirasLetrasA[auxiliar] != null )
[quote=sergiotaborda][quote=l.frias]
if(!primeirasLetrasA[auxiliar].equals(null))
O que está errado?
Muito obrigado a todos.[/quote]
if(primeirasLetrasA[auxiliar] != null )
[/quote]
Obrigado, funcionou.
Mas continuo sem entender porque estava errado.
Você poderia me explicar?
Complementando a resposta do L.Frias e respondendo sua pergunta:
O método equals() tem a seguite assinatura:
public boolean equals(Object o);
você esta chamando:
if(!primeirasLetrasA[auxiliar].equals(null))
Viu? Você está passando null. Ele espera um Object ou qualquer filho dele(Todas as classes). null não é um Object nem filho dele.
Por isso dá erro.
Mas você pode comparar da forma como o frias falou.
if(primeirasLetrasA[auxiliar] != null
pois você a verdade está falando o seguinte na istrução acima:
“A minha variavél de referencia NÃO está apontando para null?” (null no contexto pode ser “nada”).
se você colocar:
primeirasLetrasA[auxiliar] = null
você receberá false.
Se tiver resolvido sua dúvida coloque o tópico como resolvido.
[quote=l.frias][quote=sergiotaborda][quote=l.frias]
if(!primeirasLetrasA[auxiliar].equals(null))
O que está errado?
Muito obrigado a todos.[/quote]
if(primeirasLetrasA[auxiliar] != null )
[/quote]
[/quote]
Não ha nenhum problema em comparar um objeto com null, mas o resultado sempre será false. Porquê ? Porque é o que manda o contrato do método equals. E porquê isso ? porque nenhum objecto é igual a null (nada).
Comparar com null significa comparar a referencia da variável e não a equivalencia do valor do objeto.
Além disso ,se a variável onde se invoca o equals é ela mesma null, temos um NullPointerException
Experimente rodar isto:
String a = null;
if ( a.equals("oi")){
}
Vai acontecer um NullPointerException porque ‘a’ não foi definido e ainda é null.
Mais detalhes sobre como comparar variáveis e valores, aqui.
[/quote]