Java - 从字节到字符的可能有损转换

标签 java

这让我很惊讶:

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 中唯一的无符号类型,因此对于其他整数类型(intlong),此分配将起作用。

关于Java - 从字节到字符的可能有损转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36690746/

相关文章:

java - 按属性值动态过滤 ObservableList

java - 无法将 ArrayList 数据加载到 android 中的微调器

java - SOAP - 没有命名空间的前缀

java - drawPolyline() 无法正确绘制

java - 加载时显示 Java Swing 输入对话框

java - 'For' 循环中的“For”循环然后是另一个循环?

java - Sonarqube 与 codecommit 集成不起作用

java - 在ubuntu18.04.3上我的$Home目录中总是出现文件 "hs_err_pid1966.log",谁能帮助我?

java - hibernate 级联来拯救 parent 和 child

java - XML 解析 - 仅从具有特定 ID 的父节点获取节点