为什么演员必须在这里?
byte a = 0b0000_0000;
byte b = (byte) ~a;
a
是一个字节,b
是一个字节...为什么需要强制转换?
答案 0 :(得分:2)
因为Java Language Specification是这样说的
对操作数执行一元数字提升(第5.6.1节)。类型 一元按位补码表达式的推广类型 操作数。
否则,如果操作数是编译时类型
byte
,short
或char
,通过扩展原语将其提升为int
类型的值 转换(第5.1.2节)。
类型int
的值不能分配给byte
类型的变量。