O que acontece quando o código é compilado? Por que?
public class Teste {
public static void main(String[] args) {
byte a, b;
char c = '\u0000';
a = '\u0000';
b = c;
System.out.println("" + a + b);
}
}
esquece, não compila… a atribuição b = c é inválida, tu ta atribuindo um char a um byte… um é maior do q outro… precisa de cast
acontece que você está atribuindo um byte(8bits) a um char(16bits),
ai o compilador reclama, agora ele reclama logo de cara porque
b recebe o conteudo de c; que eh uma variavel, q pode ser alterado
o valor do conteudo, por isso q ele reclame mesmo q c seja = 0
e 0 eh suportado por b;
agora em
não reclama , porque a esta recendo uma literal, que ja sabemos
de ante mao se eh possivel um byte suportar ou naum ,
nesse caso sabemos q um char eh representado por uma valor unicode
em hexadecimal de 4 digitos, logo ‘\u0000’ tem valor 0.
como o valor maximo suportado por um byte eh 127 .
ate 127 = 7F (hexa) o compilador naum reclama,
ja 128 = 80 (hexa) já naum eh mais suportado.