PessoALL por que quando faço a comparação abaixo com booleano funciona e quando faço com int apresenta erro “Type mismatch: cannot convert from int to boolean”.
booleanb=true;intx=1;Sucesso:
if(b=true){}
Erro: if( x=5 ){}
No segundo caso nao estaria atribuindo 5 para x ao invés de comparar. Este codigo foi retirado da questão 3 do Test Killer.
A comparação deve ser feita com o operador de comparação “==”, não com o operador de atribuição “=”.
Infelizmente, o compilador não lhe avisa quando você usa indevidamente o operador de atribuição dentro de um “if” se o resultado for um valor booleano; ele pelo menos lhe deveria mostrar um “warning” (advertência ou, para quem é mais ligado em futebol, um “cartão amarelo”).
labbati
Thingol deve acontecer isto mesmo que voce disse, ele converte para boolean e funciona. O Warning não é exibido. Segue a questão do test killer abaixo:
é não… booleano é o único tipo que pode receber um valor na hora que for comparado… ou seja if(b2=true) é altamente válido em Java…
ViniGodoy
adriano_si:
é não... booleano é o único tipo que pode receber um valor na hora que for comparado... ou seja
if(b2=true)
é altamente válido em Java...
É que o resultado da atribuição é o valor atribuído. Na verdade, qualquer variável pode sofrer atribuição durante uma comparação, desde que a última comparação termine num resultado booleano. Ou seja...
Muito obrigado senhores. Agradeço a todos pelo exemplo e também pela parte teórica que ajudou muito no meu entendimento desta questão. Achei até que era erro de grafia na questao, mas depois vi que não.