Amigos,
Porque posso fazer a seguinte situação.
byte b = 3;
b += 7;
Já a seguinte dá perda de precisão.
byte c = 3;
c = c + 7;
Onde esta a explicação para isso.
Obrigado.
você ganha um “Type mismatch: cannot convert from int to byte”
byte c = 3;
c = (byte) (c + 7);
Para dar certo você vai precisar de um cast!
Agora, o porque da forma “b += 7” da certo, eu não sei explicar…
Quando vc dá
byte b;
b += 7;
vc não recebe type mismatch pq 7 cabe numa variável do tipo byte.
Qdo vc dá
byte c = 7;
c = c + 3;
A segunda linha gerou uma expressão aritmética, que em Java, sempre é int, e conseqüentemente, não cabe num byte, e o compilador reclama o type mismatch.
Mas venhamos, vc não quer que o compilador seja tão inteligente a ponto de gerar rotinas para descobrir o valor da variável (algs. vezes, em tempo de execução), pra saber se vai dar type mismatch, não é verdade?