整数包装 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.
Integer
1000用32位表示:
00000000 00000000 00000011 11101000
byte
是 8 位,所以我们丢弃除最低 8 位以外的所有位,我们得到:
11101000
在 8 位 two's complement 二进制中是 -24。 -24 = -128 + 64 + 32 + 8
整数包装器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.
Integer
1000用32位表示:
00000000 00000000 00000011 11101000
byte
是 8 位,所以我们丢弃除最低 8 位以外的所有位,我们得到:
11101000
在 8 位 two's complement 二进制中是 -24。 -24 = -128 + 64 + 32 + 8