Java - 错误:long n = 8751475143;

mar*_*ark 0 java long-integer

这个数字属于长距离,为什么我会收到错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The literal 8751475143 of type int is out of range 
Run Code Online (Sandbox Code Playgroud)

Jig*_*shi 11

做了

long n = 8751475143L;
Run Code Online (Sandbox Code Playgroud)

L 将使它长文字

默认情况下 int

如果整数文字后缀为ASCII字母L或l(ell),则整数文字的长度为long; 否则它的类型为int(§4.2.1).后缀L是优选的,因为字母l(ell)通常难以与数字1(一)区分开.[..]

  • @mark根据[Java语言规范](http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.1):*整数文字是如果后缀为ASCII字母L或l(ell),则输入long; 否则它是int*类型 (2认同)

Jon*_*eet 6

解析文字时不考虑赋值的目标 - 所以你需要L后缀:

long n = 8751475143L;
Run Code Online (Sandbox Code Playgroud)

在大多数情况下-有少数例外-一个表达式的类型是没有太多参考它的上下文来确定.因此,根据JLS的3.10.1节,整数文字是类型的,int除非它有一个lL后缀,并且类型的整数文字int的范围当然限于其范围int.