Java常量超出范围

时间:2014-03-07 13:55:45

标签: java long-integer

我想申报一个大常数。但java显示错误,我的常量对于int来说太大了。但我想要长久不变。怎么办?

 public static final long MAXMONEY = 1000000000000000000;

4 个答案:

答案 0 :(得分:8)

在其末尾加上L

public static final long MAXMONEY = 1000000000000000000L;

来自JLS部分3.10.1

  

如果整数文字以ASCII为后缀,则其长度为long   字母L或l(ell);否则它是int类型。

是的,这个值在long的范围内。

对常量值here的语法有一个很好的总结。

答案 1 :(得分:8)

要编写长文字,您需要在数字的末尾添加L。尝试

public static final long MAXMONEY = 1000000000000000000L;

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

答案 2 :(得分:5)

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

如果您想创建long字面值,则需要在最后添加lL来指定

1000000000000000000l
1000000000000000000L

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

但是,如果您真的打算使用大数字,请考虑使用BinIntegerBigDecimal类来避免使用integer overflow。您可以使用

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

答案 3 :(得分:1)

如果你需要非常大的数字,你可以为一个数字定义几个变量。