为啥在后面加个L就可以运行,不加就报错显示数字太大

public class Demo1 {
public static void main(String[] args) {
long num = 123456789123456789;
System.out.println(num);
}
}

img

不加“L”就默认代表是int类型,int类型最大2147483647,你这明显超出了

默认不写表名是int 这里自动强转,低转高;但是如果长度超过int那就必须要表明是长整型也就是末尾加L

定义为long型,就要写成123456789123456789L形式,就像定义float形式也要在后面加f

所有的整型字面直接数在java中被当做int类型(相当于java自动给你用int空间存储),如果你给的直接字面整数超过int的最大值,显然java默认的int存储空间不够用了,就需要你手动给数字加上L,表示让java用long类型的空间去存储。

因为你是将一个数字类型的值赋值个一个变量,而java中直接给数值变量赋值,都默认只能在int范围之类
报错信息应该是这种的吧:

img

只要超过int范围编译器就会报错,编译器默认只对int范围自动转换。