Java常数超出范围



我想声明一个很大的常数。但是Java显示出一个错误,我的常数对于INT来说太大了。但是我想要一个漫长的常数。该怎么办?

 public static final long MAXMONEY = 1000000000000000000;

L放在其末端。

public static final long MAXMONEY = 1000000000000000000L;

摘自JLS第3.10.1节:

如果整数用ASCII后缀 字母l或l(ell);否则它是int类型

是的,此值在long的范围内。

这里有一个不错的语法摘要,用于恒定值。

为了写一个长的文字,您需要将L添加到数字末尾。尝试

public static final long MAXMONEY = 1000000000000000000L;

我没有测试,如果这个数字足够长。

默认情况下,所有非浮点文字都被视为整数,并且整数的最大值为 2147483647,因此1000000000000000000在这里不正确(它不超出整数范围)。

如果要创建long字面的字面形式,则需要在末尾添加lL来指定它,例如

1000000000000000000l
1000000000000000000L

首选方法是添加L,因为l看起来像1并引起混乱。

但是,如果您确实要在大数字上操作,请考虑使用BinIntegerBigDecimal类,以避免整数溢出。您可以用

实例化它们
new BigInteger("1000000000000000000");

如果您需要很大的数字,则可以为一个数字定义几个变量。

最新更新