Char en octet? (Java)

Comment se fait-ce qui se passe:

char a = '\uffff'; //Highest value that char can take - 65535
byte b = (byte)a; //Casting a 16-bit value into 8-bit data type...! Isn't data lost here?
char c = (char)b; //Let's get the value back
int d = (int)c;
System.out.println(d); //65535... how?

En gros, j'ai vu qu'un char est de 16 bits. Donc, si vous avez jeté dans un bytecomment se fait-aucune donnée n'est perdue? (La valeur est la même après la coulée dans un int)

Merci d'avance de répondre à ce petit ignorant question de la mienne. 😛

EDIT: Woah, découvert que ma sortie d'origine fait comme prévu, mais je viens de mettre à jour le code ci-dessus. En gros, un personnage est jeté dans un octet et puis jeté en arrière dans un char, et de son origine, de 2 octets valeur est conservée. Comment est-ce possible?

source d'informationauteur wakachamo