这个数字落入射程远,所以为什么我得到的错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The literal 8751475143 of type int is out of range
这个数字落入射程远,所以为什么我得到的错误:
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)后缀; 否则它是int类型(§4.2.1)的。 后缀L被优选的,因为字母l(ELL)通常很难从数字1(1)区分开来。 [..]
分配的目标解析文本时,没有考虑到 - 所以你需要将L后缀:
long n = 8751475143L;
在大多数情况下-并有少数例外-一个表达式的类型是没有太多参考它的上下文来确定。 从而每对JLS的3.10.1部分 ,文字的整数类型的int
除非它有一个l
或L
后缀,和文本类型的整数的范围int
当然限制在该范围的int
itslf。
Java中的所有数字都被视为integer
S,除非你说,否则(或者您使用的是小数点-然后他们被作为处理float
S)。
所以,如果你写
long i = 1234;
java会踏数1234
的integer
,并做类型强制转换为long
为您服务。
但是,如果键入:
long n = 8751475143;
Java可以这样对待8751475143
为integer
,因为它是超出范围。 您需要指定,那你的意思是long
,加上在年底“L”:
long n = 8751475143L;