&0xff
这个一般用于byte和int之间进行转换,说通俗点,java的二进制计算采用的是不是原码,是补码,以-1为例,补码是11111111,byte是一个字节,int是4个字节,如果强转,会自动补位,前面全部补1,最后结果就是65535,&0xff操作之后就是255,这样就避免了误差。
public static void main(String args[]) { System.out.println(Integer.toBinaryString(-1)); System.out.println(Integer.toBinaryString(-1 & 0xff));
}