Java - 从byte到char的可能有损转换

时间:2016-04-18 09:57:53

标签: java

这令我感到惊讶:

char c = 'M';
byte b = -1;
c = b; //incompatible types

为什么这可能是有损转换?一个字节是8位,Java中char的大小总是16位,所以我希望这是推广。

1 个答案:

答案 0 :(得分:2)

char是无符号的(范围为0到2 ^ 16 - 1),因此-1不在其范围内。

另一方面,

byte已签名,范围为-128到127.因此,即使ab bytechar的一半位表示, ,并非所有可能的byte值都是char值。

BTW,char是唯一的无符号类型是Java,因此对于其他整数类型(intlong),这个赋值可以正常工作。