Java 指定基本体的最大值和最小值

Java 指定基本体的最大值和最小值,java,binary,max,min,primitive-types,Java,Binary,Max,Min,Primitive Types,要记住十进制中每个整数原语的最大值和最小值是相当困难的。对于二进制和十六进制来说并不难。我知道包装器类内置了这些值,但我喜欢使用二进制和十六进制。问题是我尝试了 //值为字节 值=0x80;//1000万欧元 但它不起作用。但是(经过一点研究之后) 值=-0x80 及 值=(字节)0x80 两者都有效。我认为,当为较小的整数原语分配一个文本时,不需要强制转换。二进制、八进制和十六进制值是否被视为文字,或者它们都是32位,因为它们不是十进制?任何有助于了解正在发生的事情都是欢迎的 要记住最大值和最

要记住十进制中每个整数原语的最大值和最小值是相当困难的。对于二进制和十六进制来说并不难。我知道包装器类内置了这些值,但我喜欢使用二进制和十六进制。问题是我尝试了

//值为字节 值=0x80;//1000万欧元

但它不起作用。但是(经过一点研究之后)

值=-0x80

值=(字节)0x80


两者都有效。我认为,当为较小的整数原语分配一个文本时,不需要强制转换。二进制、八进制和十六进制值是否被视为文字,或者它们都是32位,因为它们不是十进制?任何有助于了解正在发生的事情都是欢迎的

要记住最大值和最小值,请使用内置常量:

int iMax = Integer.MAX_VALUE;
byte bMin = Byte.MIN_VALUE;
二进制、八进制和十六进制值在编译时进行求值,就像它们的十进制等价值被写入一样。一些例子:

byte b1 = 0b1111111; //OK (same as byte b1 = 127)
byte b2 = 0b10000000; //possible lossy conversion (compiler does not know if you tried to insert the byte -128 or the int 128)

int i1 = 0xFFFFFFFF; //OK
int i2 = 0xFFFFFFFFF; //too large to fit inside int

只要文本适合原语类型,它就可以正常工作,但是
0x80
不适合
byte
,因为
byte
是有符号的。可能的最大字节是
0x7f
。您没有使用
0x80
文本指定位模式
10000000
;您正在指定值128。我认为,由于分配给byte、short和char的文字十进制数不需要强制转换,所以二进制或十六进制数不需要强制转换。对我来说,0x80似乎与-128没有什么不同,因为作为一个字节,它们都具有相同的位模式,并且都被分配给相同的有符号整数。