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

Java 在长变量声明中使用字母L,java,long-integer,variable-declaration,Java,Long Integer,Variable Declaration,当我使用上面的语句时,我没有得到一个错误(我没有在末尾使用l),但是当我使用下面的语句时,我得到了这个错误: int类型的文字32444超出范围 如果我使用longl2=32444l,则没有错误 这是什么原因?长变量不强制使用l。3244444被解释为文字整数,但不能放入32位int变量中。它需要是一个文字长值,因此它需要一个l或l: long l2 = 3244444444; 更多信息: ,特别是默认值和文本部分 请注意,当赋值给长变量时,int文本将自动加宽为long,但在表示不可用的值

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

int类型的文字32444超出范围

如果我使用
longl2=32444l,则没有错误


这是什么原因?长变量不强制使用l。

3244444
被解释为文字整数,但不能放入32位
int
变量中。它需要是一个文字长值,因此它需要一个
l
l

long l2 = 3244444444;
更多信息:

  • ,特别是默认值文本部分

请注意,当赋值给长变量时,int文本将自动加宽为long,但在表示不可用的值时,需要使用显式长文本

  • 大于
    Integer.MAX_值(2147483647)

    (或)

  • 小于整数值(-2147483648)

  • 但我声明了,它是如何解释的integer@PSR变量为整数,文字值解释为
    int
    ,当分配给
    long
    变量时,它将成为
    long
    值。有关更多信息,请参阅我答案中的链接。
    long l2 = 3244444444;
    
    long l2 = 3244444444l; // or 3244444444L
    
    long x1 = 12; //OK
    long x2 = 2147483648; // not OK! That's not a valid int literal
    long x3 = 2147483648L; // OK