整数包装 Class

Integer Wrapper Class

整数包装器class

Integer obj = new Integer("1000");

System.out.println(obj.byteValue( )); //-24

我无法理解这个输出是如何形成的。我想了解这个整数中的“1000”如何转换为字节中的“-24”。我想知道这背后的逻辑。

将整数转换为字节将给出整数的最后 8 位。

十进制1000 -> 二进制1111101000

将其转换为字节值得到 11101000,即 -24。

docs 说:

Returns the value of this Integer as a byte after a narrowing primitive conversion.

如果您不知道什么是“缩小原始转换”,那么这并不是特别有用。那么,您可以查看 Java 语言规范 (section 5.1.3) 以了解其定义:

A narrowing conversion of a signed integer to an integral type T simply discards all but the n lowest order bits, where n is the number of bits used to represent type T.

Integer1000用32位表示:

00000000 00000000 00000011 11101000

byte 是 8 位,所以我们丢弃除最低 8 位以外的所有位,我们得到:

11101000

在 8 位 two's complement 二进制中是 -24。 -24 = -128 + 64 + 32 + 8