Galera, vejam este codigo:
public class teste {
public static void main (String[] args){
short a=128;
byte valor=(byte)a;
System.out.println(valor);
}
}
O resultado que é retornado é -128.
Notem que atribui 128 ao tipo short, pois se eu tivesse atribuido 127 não teria ocorrido mudança.
Alguém poderia me dizer porque isto ocorre?
pq um byte vai de -128 a 127
e quando voce passa do valor, ele começa a contar em loop.
isso é por causa dos bits q cada tipo primitivo do java suporta…
se voce olhar a saida em numeros binários, vai entender…
Isso é meio chato, mas vamos lá:
representação de 128 em 16 bits (short) = 0000000010000000
representação de 128 em 8 bits (byte) = 10000000
O bit da extrema esquerda indica o sinal: 1= negativo
Para saber o valor de um número negativo vc deve inverter todos os bits: 01111111, depois adicione 1 = 10000000
Resumindo: -128[/b]