0

这个数字属于长期范围,那么为什么我会收到错误消息:

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

3 回答 3

11

做了

long n = 8751475143L;

L将使它长字面意思

默认情况下它的int

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

于 2012-05-29T14:18:56.347 回答
6

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

long n = 8751475143L;

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

于 2012-05-29T14:19:06.143 回答
0

java 中的所有数字都被视为integers,除非您另有说明(或者您使用小数分隔符 - 然后它们被视为floats)。

所以,如果你写

long i = 1234;

java会将数字1234作为integer,并long为您进行类型转换。

但是,如果您键入:

long n = 8751475143;

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

long n = 8751475143L;

于 2012-05-29T14:25:37.533 回答