我想申报一个大常数。但java显示错误,我的常量对于int来说太大了。但我想要长久不变。怎么办?
public static final long MAXMONEY = 1000000000000000000;
答案 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
字面值,则需要在最后添加l
或L
来指定
1000000000000000000l
1000000000000000000L
首选方法是添加L
,因为l
看起来像1
并导致混淆。
但是,如果您真的打算使用大数字,请考虑使用BinInteger
或BigDecimal
类来避免使用integer overflow。您可以使用
new BigInteger("1000000000000000000");
答案 3 :(得分:1)
如果你需要非常大的数字,你可以为一个数字定义几个变量。