Java - Error on: long n = 8751475143;

2019-07-29 15:08发布

这个数字落入射程远,所以为什么我得到的错误:

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

Answer 1:

做了

long n = 8751475143L;

L将使长字面

默认情况下,它的int

字面的整数型的长,如果它是与ASCII字母L或l(ELL)后缀; 否则它是int类型(§4.2.1)的。 后缀L被优选的,因为字母l(ELL)通常很难从数字1(1)区分开来。 [..]



Answer 2:

分配的目标解析文本时,没有考虑到 - 所以你需要将L后缀:

long n = 8751475143L;

在大多数情况下-并少数例外-一个表达式的类型是没有太多参考它的上下文来确定。 从而每对JLS的3.10.1部分 ,文字的整数类型的int除非它有一个lL后缀,和文本类型的整数的范围int当然限制在该范围的int itslf。



Answer 3:

Java中的所有数字都被视为integer S,除非你说,否则(或者您使用的是小数点-然后他们被作为处理float S)。

所以,如果你写

long i = 1234;

java会踏数1234integer ,并做类型强制转换为long为您服务。

但是,如果键入:

long n = 8751475143;

Java可以这样对待8751475143integer ,因为它是超出范围。 您需要指定,那你的意思是long ,加上在年底“L”:

long n = 8751475143L;



文章来源: Java - Error on: long n = 8751475143;