5.1.4 Widening and Narrowing Primitive Conversions The following conversion combines both widening and narrowing primitive convesions:
* byte to char
First, the byte is converted to an int via widening primitive conversion, and then the resulting int is converted to a char by narrowing primitive conversion.
when you convert byte to char, byte is first converted to int. so compiler knows that there is gonna be some narrowing conversion from int to char. and you can not implicitly convert int to char, except if int is final and falls into range of char. which is your case.