Tag: 未签名

如何在Java 8和Java 9中使用无符号的Integer?

在Oracle的“Primitive data types” 页面中 ,它提到了Java 8增加了对unsigned int和long的支持: int :默认情况下, int数据types是一个32位有符号的二进制补码整数,其最小值为-2 31 ,最大值为2 31 -1。 在Java SE 8和更高版本中,可以使用int数据types来表示一个无符号的32位整数,它的最小值为0,最大值为2 32 -1。 使用Integer类将int数据types用作无符号整数。 有关更多信息,请参见数字类部分。 像compareUnsigned , divideUnsigned等静态方法已被添加到Integer类来支持无符号整数的算术运算。 long : long数据types是一个64位的二进制补码整数。 有符号long的最小值为-2 63 ,最大值为2 63 -1。 在Java SE 8和更高版本中,可以使用long数据types来表示无符号的64位long ,其最小值为0,最大值为2 64 -1。 当你需要一个比int提供的值更宽的范围时,使用这个数据types。 Long类还包含像compareUnsigned , divideUnsigned等方法来支持无符号long算术运算。 但是,我发现无法声明一个无符号的long或integer。 例如,下面的代码给出了一个编译器的错误信息:“字面超出范围”(当然我使用的是Java 8),它应该在范围内(分配的值恰好是2 64 -1) : public class Foo { static long values […]