在长变量声明中使用字母 L

20 浏览
0 Comments

在长变量声明中使用字母 L

当我使用上面的语句时,我没有得到错误(我没有在末尾使用l),但是当我使用下面的语句时,我得到了这个错误:\n

\n3244444444这个int类型的字面值超出了范围。\n

\n如果我使用long l2 = 3244444444l;,那么就没有错误。\n这是为什么呢?使用l对于long变量来说并不是强制的。

0
0 Comments

在Java中,当将int字面值分配给long变量时,int字面值会自动扩展为long。但是,当表达一个大于Integer.MAX_VALUE(2147483647)或小于Integer.MIN_VALUE(-2147483648)的值时,需要使用显式的long字面值。以下是解决这个问题的方法:

1. 对于大于Integer.MAX_VALUE的值,使用long字面值:

long x1 = 2147483648L; // OK

2. 对于小于Integer.MIN_VALUE的值,也需要使用long字面值:

long x2 = -2147483649L; // OK

通过使用显式的long字面值,可以确保将大于Integer.MAX_VALUE或小于Integer.MIN_VALUE的值正确地分配给long变量。

0
0 Comments

问题的出现原因是变量被声明为long类型,但赋值时使用的字面值被解释为int类型,导致无法适应32位的int变量。解决方法是在字面值的末尾添加l或L,将其转化为long类型。

具体代码如下:

long l2 = 3244444444l; // or 3244444444L

更多信息可以在以下链接中找到:

- [Primitive Data Types](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html),特别是其中的"Default Values"和"Literals"部分。

但是我已经声明为long了,为什么被解释为int呢?

这是因为变量是int类型的,字面值被解释为int类型,当赋值给long变量时,它会变成一个long值。请参考我回答中的链接以获取更多信息。

0