2014-03-07 106 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

如果你需要非常大的數字,你可以爲一個數字定義幾個變量。