2011-08-25 47 views
2

long類型其實我的系統給出Long.MAX_VALUE爲9223372036854775807錯誤在Java

但是,當我寫我這樣的程序,

package hex; 

/** 
* 
* @author Ravi 
*/ 
public class Main { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     // TODO code application logic here 

     long x = 9223372036854775807; 

     System.out.println(x); 

    } 

} 

我收到編譯時錯誤。任何人都可以解釋原因嗎?

+4

'long x = 922337203685477580L' – jjnguy

+0

@ user650521你不想爲你解答新的問題,對吧?如果其中一個答案有幫助 - 而且我認爲這是 - 爲什麼不點擊左側的概述✓複選標記? – glglgl

回答

8

沒有後綴,它是一個int常量(它溢出),而不是一個長常量。最後堅持一個L

3

9223372036854775807是一個int文字,它太大而不適合int
int文字分配給long的事實沒有區別。

您需要使用L後綴創建long文字。

4

你可能想用這樣的嘗試:

long x = 9223372036854775807L; 

沒有大號在最後,你會宣佈一個int

0

如果您不指定什麼樣的數字字面量,則假定爲int。您需要指定通過在數字的末尾加上「L」或「L」(好,因爲「L」的模樣1)要long

long x = 9223372036854775807L; 

代替:

long x = 9223372036854775807;