2014-03-07 76 views
0

我想宣布一个很大的常量。但是java显示一个错误,我的常量对于int来说太大了。但我想要长久不变。该怎么办?Java常量超出范围

public static final long MAXMONEY = 1000000000000000000; 
+0

[Initialize a long in Java](http://stackoverflow.com/questions/6834037/initialize-a-long-in-java) –

回答

8

为了编写长文字,您需要在编号的末尾添加一个L。尝试

public static final long MAXMONEY = 1000000000000000000L; 

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

+3

它在范围内。还有一个零,它不会。 –

8

L放在它的末尾。

public static final long MAXMONEY = 1000000000000000000L; 

从JLS部3.10.1

字面的整数型的长,如果它与一个ASCII 字母L或l(ELL)后缀;否则它是int类型的。

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

对于常量值here有一个很好的语法小概要。

5

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

如果你想创建long字面你需要像

1000000000000000000l 
1000000000000000000L 

首选方式加入lL末指定它是添加L因为l看起来像1,造成混乱。

但是,如果你真的打算在大数字上操作,可考虑使用BinIntegerBigDecimal类来避免integer overflow。你可以实例化它们

new BigInteger("1000000000000000000"); 
1

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