我正在使用Java SE开发工具包8更新25(64位).我已经阅读了The Java™Tutorials中的"原始数据类型"Java教程,根据此规范,long类型可以保持最大值(2到64的功率)-1,即18446744073709551615.
但是下面的代码会抛出"整数太大"错误消息.
public class SampleClass
{
public static void main (String[] args)
{
Long longMaxValue= 18446744073709551615L /* UInt64.MaxValue */;
}
}
Run Code Online (Sandbox Code Playgroud)
此外,Long.Max_Value仅返回9223372036854775807.为什么?我需要将值18,446,744,073,709,551,615存储为java中的常量.我该怎么办?
任何帮助都会得到满足.
long的最大正值是(2到63的幂) - 1,因为Java中的长整数是有符号的,因此可以保持负整数.最左边的位保留给符号,该值为值本身留下63位.
你可以使用BigInteger
if Long.MAX_VALUE
不够大.
另一个选择,如果您使用Java 8并希望将其long
视为无符号,则使用以下的unsigned方法Long
:
例如 :
long l = parseUnsignedLong("18446744073709551615");
Run Code Online (Sandbox Code Playgroud)
如果打印l
用System.out.println(l)
,你会看到一个负值,但如果你打印Long.toUnsignedString(l)
你会看到无符号值.