Eu notei o seguinte
byte = int
int = float
float = double
Ocorrerá o erro porque o compilador não sabe se ocorrerá perda de precisão, o erro se chama: Possible loss of precision
Mas porque se for feito:
boolean = int
o erro será considerado como incompatible types, e não poderá ser feito a conversão de jeito nenhum
Eu acredito que é porque boolean não é um tipo numérico no Java.
Apesar de ser representado como 0 e 1, no Java ele somente aceita valores true e false.
Tanto que se você fizerboolean bool = 1;
Isso não vai compilar.
Mas é a minha teoria.
O tipo booleano, no Java, realmente não é um tipo numérico.
Se quiser, faça a atribuição desejada como:
int x = 1;
boolean b = (x != 0);
(Em C++ eu usaria algo como
int x = 1;
bool b = ! ! x;
que confesso que é mais obscuro
)
Amigo, você está fazendo confusão, esses tipos primitivos de variáveis não são iguais, vamos lá:
boolean, range 0 ~ 1 (false e true).
byte (4 bits), range -128 ~ 127
int (32 bits), range -2147483648 ~ 2147483647
float (32 bits), range 1.4E-45 ~ 3.4028235E38
double (64 bits), range 4.9E-324 ~ 1.7976931348623157E308
São estes tipos de váriaveis existentes, pense em conjuntos numericos, como numeros inteiros e reais.
Faltaram só 2 tipos.
short (16 bits), range -32.768 ~ 32.767
long (64 bits), range -9.223.372.036.854.775.808 ~ 9.223.372.036.854.775.807
Mas acho que a confusão do autor foi pelo fato de binários poderem ser representados por 0 e 1.
EDIT: se é pra falar de todos mesmo faltou o tipo primitivo char, rs.
Fonte: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
O que tava fazendo confusão é porque eu não tava entendendo porque não estava conseguindo converter um int para um boolean. Acho que deve pelo fato que o digaoneves falou, o tipo boolean não possue valor numérico. É true ou false que são diferentes de 0 e 1 na verdade.
O que é mais confuso no Java é que “char” é um tipo numérico :roll: e ele é equivalente ao “unsigned short” do C e C++.
Ele pode receber valores de 0 até 65535.
No C, o tipo “char” é um tipo numérico, mas ele pode receber valores de -128 a +127 ou, se for o “unsigned char”, pode receber valores de 0 a 255.