为什么必须在一个字节上对Java中的某个字节进行按位操作?

时间:2015-03-31 05:03:12

标签: java

为什么演员必须在这里?

byte a = 0b0000_0000;
byte b = (byte) ~a;

a是一个字节,b是一个字节...为什么需要强制转换?

1 个答案:

答案 0 :(得分:2)

因为Java Language Specification是这样说的

  

对操作数执行一元数字提升(第5.6.1节)。类型   一元按位补码表达式的推广类型   操作数。

and

  

否则,如果操作数是编译时类型byteshort或   char,通过扩展原语将其提升为int类型的值   转换(第5.1.2节)。

类型int的值不能分配给byte类型的变量。