Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Casting

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;
4 respostas
int j = (long) 5;

Não é válido, pois um long não cabe em um int.

solução!

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.