如何在 Java 8 和 Java 9 中使用无符号整数?
在Oracle的“基元数据类型”页面中,它提到Java 8增加了对无符号整数和长整型的支持:
int
:默认情况下,数据类型为 32 位有符号二进制补码整数,其最小值为 −231,最大值为 231−1。在 Java SE 8 及更高版本中,可以使用int
数据类型来表示无符号的 32 位整数,其最小值为 0,最大值为 232−1。使用该类可将数据类型用作无符号整数。有关详细信息,请参阅数字类部分。像 等静态方法已被添加到类中以支持无符号整数的算术运算。int
Integer
int
compareUnsigned
divideUnsigned
Integer
long
:数据类型为 64 位二进制补码整数。有符号的最小值为 −263,最大值为 263−1。在 Java SE 8 及更高版本中,可以使用long
数据类型来表示无符号的 64 位long
,其最小值为 0,最大值为 264−1。当您需要比 int 提供的值范围更宽的值范围时,请使用此数据类型。该类还包含诸如 等方法,以支持无符号的算术运算。long
long
Long
compareUnsigned
divideUnsigned
long
但是,我发现没有办法声明无符号长整型或整数。例如,下面的代码给出了编译器错误消息“文本超出范围”(当然,我使用的是Java 8),当它应该在范围内时(分配的值恰好是264−1):
public class Foo {
static long values = 18446744073709551615L;
public static void main(String[] args){
System.out.println(values);
}
}
那么,有没有办法声明一个无符号的int或long呢?