这让我很惊讶:
char c = 'M';
byte b = -1;
c = b; //incompatible types
为什么这可能是有损转换?一个字节是 8 位,Java 中字符的大小始终是 16 位,所以我希望这是一个提升。
最佳答案
char
是无符号的(范围为 0 到 2^16 - 1),因此 -1
不在其范围内。
byte
是有符号的,并且范围为 -128 到 127。因此,即使 b byte
由一半的位表示一个 char
,并非所有可能的 byte
值也是 char
值。
顺便说一句,char
是 Java 中唯一的无符号类型,因此对于其他整数类型(int
、long
),此分配将起作用。
关于Java - 从字节到字符的可能有损转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36690746/