使用0xFF而不是0xFFFFFFFF进行字节初始化

时间:2013-12-22 17:42:13

标签: java initialization byte

我有一个关于在java中初始化byte的问题,我想初始化一个字节值allBitsOne,并且它的所有位都是1:

方法1:

byte allBitsOne = 0xFF;

错了,它说0xFF是一个整数类型并且超出了字节范围,所以我就像下面这样做

方法2:

byte allBitsOne = (byte)0xFF; 

工作正常。

方法3:

byte allBitsOne = 0xFFFFFFFF; 

它的工作正常,但如果0xFF超出一个字节的范围,为什么不0xFFFFFFFF

谢谢大家,我发现了这个:link

3 个答案:

答案 0 :(得分:4)

byte是有符号整数类型,从-128到127。

0xFF是255,所以它大于127。

0xFFFFFFFF为-1,因此它在字节类型的范围内。

请参阅http://en.wikipedia.org/wiki/Two%27s_complement

答案 1 :(得分:1)

Java中的

字面整数是32位数字,因此:

0xff是一个整数类型,等于255,超过了字节的限制。

0xffffffff是一个整数类型,等于-1,它不超过字节的限制。

答案 2 :(得分:1)

java中java中的byte-variable可以保存-128到127之间的值。 如果你想将所有位设置为1.那么你可以将-128存储到它。