它设置
result为将8位
value放入的最低8位得到的(无符号)值
result。
诸如此类的必要原因是
byteJava中的一种签名类型。如果你刚刚写过:
int result = value;
那么result最终将得到值ff ff ff fe而不是00 00 00 fe。另一个微妙之处在于,将&定义为仅对int值1进行操作,因此会发生以下情况:
value
被提升为int(ff ff ff fe)
。0xf
f是int
文字(00 00 00 ff)
。- 将
&
被施加到得到所希望的值result
。
(该点是,转换int
发生之前的&
施加操作者)。
1 好吧,不完全是。该
&运营商工作的long价值以及,如果操作数是一个
long。但是没有
byte。请参阅Java语言规范的15.22.1和5.6.2节。



