Java Long.MAX_VALUE 属性 抛出 "integer number too large" 异常!我包括 "L"

Java Long.MAX_VALUE property throws "integer number too large" exception! Am including "L"

我正在使用 Java SE 开发套件 8 更新 25(64 位)。 我已经阅读了 The Java™ Tutorials 中的 "Primitive Data Types" java 教程,根据此规范,long 类型可以保存(2 的 64 次方)-1 的最大值,即 18446744073709551615。

但是下面的代码抛出 "integer number too large" 错误消息。

public class SampleClass
{
    public static void main (String[] args)
    {        
        Long longMaxValue= 18446744073709551615L /* UInt64.MaxValue */;
    }
}

还有 Long.Max_Value 只有 returns 9223372036854775807 。为什么?我需要将值 18,446,744,073,709,551,615 作为常量存储在 java 中。我该怎么办?

我们将不胜感激。

long 的最大正值是(2 的 63 次方)- 1,因为 Java 中的 long 是有符号的,因此可以容纳负整数。最左边的位保留给符号,剩下 63 位给值本身。

如果 Long.MAX_VALUE 不够大,您可以使用 BigInteger

另一种选择,如果您使用 Java 8 并希望将 long 视为无符号的,则使用 Long 的无符号方法:

例如:

long l = parseUnsignedLong("18446744073709551615");

如果用 System.out.println(l) 打印 l,您会看到负值,但如果打印 Long.toUnsignedString(l),您会看到无符号值。