Java – 错误:long n = 8751475143;

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

Exception in thread "main" java.lang.Error: Unresolved compilation problem: The literal 8751475143 of type int is out of range 

做了

 long n = 8751475143L; 

L会使它长文字

默认为int

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

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

 long n = 8751475143L; 

在大多数情况下 – 并且有一些值得注意的例外 – 表达式的类型在没有太多参考其上下文的情况下确定。 因此,根据JLS的3.10.1节 ,整数文字的类型为int除非它具有lL后缀, int类型的整数文字的范围当然限于int的范围。

java中的所有数字都被视为integer s,除非你另有说明(或者你使用小数分隔符 – 然后将它们视为float )。

所以,如果你写

long i = 1234;

java会将数字1234作为integer ,并为你做类型转换。

但是,如果您输入:

long n = 8751475143;

Java无法将8751475143视为integer ,因为它超出了范围。 您需要通过在末尾添加“L”来指定您的意思很long

long n = 8751475143L;