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
除非它具有l
或L
后缀, int
类型的整数文字的范围当然限于int
的范围。
java中的所有数字都被视为integer
s,除非你另有说明(或者你使用小数分隔符 – 然后将它们视为float
)。
所以,如果你写
long i = 1234;
java会将数字1234
作为integer
,并为你做类型转换。
但是,如果您输入:
long n = 8751475143;
Java无法将8751475143
视为integer
,因为它超出了范围。 您需要通过在末尾添加“L”来指定您的意思很long
:
long n = 8751475143L;