2011-08-25 72 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;