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

Java 使用0xFF而不是0xFFFFFF进行字节初始化,java,initialization,byte,Java,Initialization,Byte,我有一个关于在java中初始化字节的问题,我想初始化一个字节值allBitsOne,它的所有位都是1: 方法1: byte allBitsOne = 0xFF; byte allBitsOne = (byte)0xFF; byte allBitsOne = 0xFFFFFFFF; 错了,它说0xFF是一个整数类型,在字节范围内,所以我像下面这样做 方法2: byte allBitsOne = 0xFF; byte allBitsOne = (byte)0xFF; byte all

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

方法1:

byte allBitsOne = 0xFF;
byte allBitsOne = (byte)0xFF; 
byte allBitsOne = 0xFFFFFFFF; 
错了,它说0xFF是一个整数类型,在字节范围内,所以我像下面这样做

方法2:

byte allBitsOne = 0xFF;
byte allBitsOne = (byte)0xFF; 
byte allBitsOne = 0xFFFFFFFF; 
很好

方法3:

byte allBitsOne = 0xFF;
byte allBitsOne = (byte)0xFF; 
byte allBitsOne = 0xFFFFFFFF; 
它也可以正常工作,但是如果
0xFF
超出了一个字节的范围,为什么
0xffffff


谢谢大家,我发现:

Java中的文字整数是有符号的32位数字,所以:

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


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

Java中的文字整数是有符号的32位数字,因此:

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


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

字节是一个有符号整数类型,从-128到127

0xFF是255,所以它大于127

0xFFFFFF是-1,因此它在字节类型的范围内


请参见

字节是有符号整数类型,从-128到127

0xFF是255,所以它大于127

0xFFFFFF是-1,因此它在字节类型的范围内


请参见

java中的字节变量可以保存-128到127之间的值。
如果要将所有位设置为1。然后你可以将-128存储到它。

java中的字节变量可以保存从-128到127的值。
如果要将所有位设置为1。然后你可以将-128存储到它。

+1没有
字节
常量,只有
int
(和
long
float
double
)常量。+1没有
字节
常量,只有
int
(和
long
float
double
)常量。