Sendo int i = (byte) 5; válido este casting. Poderia fazer qualquer outro da mesma natureza. (Tipos primitivos). Por exemplo: int i = (long) 5; ?
int i = (byte) 5;
int j = (long) 5;
Sendo int i = (byte) 5; válido este casting. Poderia fazer qualquer outro da mesma natureza. (Tipos primitivos). Por exemplo: int i = (long) 5; ?
int i = (byte) 5;
int j = (long) 5;
int j = (long) 5;
Não é válido, pois um long não cabe em um int.
E aí Manoel, tranquilo?
Complementando a resposta do Breno, os seguintes tipos ocupam esses espaços:
byte 1 byte
short 2 bytes
int 4 bytes
long 8 bytes
float 4 bytes
double 8 bytes
char 2 byte
e o boolean que não tem um tamanho definido exatamente.
Você pode fazer uma atribuição normalmente de um tamanho menor para um tamanho maior, por exemplo:
int a = 3;
long b = a;
Isto acima é chamado de casting implícito.
Também pode fazer algo como:
long a = 5;
int b = (int) a;
Estamos "truncando" um long e estamos colocando dentro de um int. Repare que precisamos explicitar para o compilador que queremos fazer essa conversão de um tipo maior para um menor. Isso é chamado de casting explícito.
long a = 5000000989889889349l;
int b = 10;
b += a;
Neste caso ai; já funciona. Qual a razão?
O operador "+=" e suas variações "ignoram" o overflow e colocam um valor que caiba na variável , se voce imprimir "b" verá que o resultado não é o esperado.