Ok concordo que um double nao pode ser colocado em um float, mas um int não pode ser colocado dentro de um byte, estou certo?!
Ok concordo que um double nao pode ser colocado em um float, mas um int não pode ser colocado dentro de um byte, estou certo?!
Oi Rodrigo, faz sentido. Mas com os valores menores que int, a regra muda um pouco. O compilador consegue faz a checagem e quando o valor cabe no intervalo suportado ele deixa passar.
Exemplo. O byte suporta valores no intervalo entre -128 até 127. Qualquer int atribuído dentro desse intervalo, o compilador deixa passar.
byte a = 12; // compilador legal
Um número fora do intervalo, não compila:
byte a = 189; // tipos incompatíveis. tentando atribuir int a um byte
É bom lembrar que operações aritméticas com tipos menores que int sempre retornam int, por isso o código a seguir não compila mesmo que o resultado esteja no intervalo suportado pelo byte:
byte a = 1;
byte b = 2;
byte c = a + b; // erro. deveria ser int c = a - b;
Faz sentido?
Ok. Mas no exercício Float f=3.0; É um double que esta dentro do intervalo do float nao?! No mesmo caso que o int esta dentro do byte.
Está certo, Rodrigo. Mas o tratamento que o java dá é diferente. Mesmo que o double esteja no intervalo de um float, não é possível tal atribuição.
O caso em que o compilador permite se aplica apenas para os tipos númericos menores que int, que são: short, byte e char.
Você também não consegue atribuir um long a um int mesmo que ele esteja no intervalo do int.
Faz sentido?
AAAAAAAAAaaaaa sim .. agora entendi. Obrigado pela paciência Lucas!
Opa Rodrigo, que bom! Qualquer dúvida é só abrir um tópico que tentamos responder. :)
Bons estudos! Abraço.
Valeu Lucas, tirou minha dúvida também.