在长变量声明中使用字母L.
long l2 = 32;
当我使用上面的语句时,我没有收到错误(我最后没有使用l
),但是当我使用下面的语句时,我收到此错误:
int类型的文字3244444444超出范围
long l2 = 3244444444;
如果我用long l2 = 3244444444l;
,那就没有错误。
这是什么原因? 对于长变量,使用l不是必需的。
3244444444
被解释为文字整数但不能适合32位的int
变量。 它需要是一个字面长值 ,所以它最后需要一个l
或L
:
long l2 = 3244444444l; // or 3244444444L
更多信息:
- 原始数据类型 ,特别是默认值和文字部分。
请注意,虽然在分配给long变量时int literals将自动加宽为long,但在表达值时需要使用显式long文字。
-
大于
Integer.MAX_VALUE (2147483647)
(要么)
-
小于
Integer.MIN_VALUE (-2147483648)
:long x1 = 12; //OK long x2 = 2147483648; // not OK! That's not a valid int literal long x3 = 2147483648L; // OK