这令我感到惊讶:
char c = 'M';
byte b = -1;
c = b; //incompatible types
为什么这可能是有损转换?一个字节是8位,Java中char的大小总是16位,所以我希望这是推广。
答案 0 :(得分:2)
char
是无符号的(范围为0到2 ^ 16 - 1),因此-1
不在其范围内。
byte
已签名,范围为-128到127.因此,即使ab byte
由char
的一半位表示, ,并非所有可能的byte
值都是char
值。
BTW,char
是唯一的无符号类型是Java,因此对于其他整数类型(int
,long
),这个赋值可以正常工作。