0
为什么这里需要演员?为什么你必须将一个字节的按位操作转换为Java中的一个字节?
byte a = 0b0000_0000;
byte b = (byte) ~a;
a
是一个字节,b
是一个字节...为什么你需要转换?
为什么这里需要演员?为什么你必须将一个字节的按位操作转换为Java中的一个字节?
byte a = 0b0000_0000;
byte b = (byte) ~a;
a
是一个字节,b
是一个字节...为什么你需要转换?
因为Java Language Specification是这么说的
一元数值提升(§5.6.1)的操作数执行。一元逐位补码表达式的类型 是操作数 的升级类型。
否则,如果操作数是编译时类型的
byte
,short
,或者char
,它是由一个扩大原始 转换晋升为int
类型的值(§5.1 0.2)。
int
类型的值不能分配给类型为byte
的变量。
多么奇怪的规则。我会在〜11110101分钟内接受答案。 – 2015-03-31 05:08:03