Java 长无后缀

Java long without suffix

我读过要声明一个 long,您需要在数字后缀 lL

到目前为止,还不错。但是,如果我省略这个后缀会怎样?

long l1 = 100l; // ok
long l2 = 100L; // ok

long l3 = 100; // ?

l3现在是整数还是长整数?

long l3 = 100 声明了一个 long,并为其分配了一个 int100 是一个 int 文字),这导致 int 被隐式提升为 long。

但是,int 范围是有限制的。如果没有 L 后缀,则无法声明有效的 long 值:

long l3 = 2147483648; //doesn't compile

2147483647 是 int 的最大值,如果没有 l 后缀 作为长文字 ,则不能使用高于它的任何值。事实上,在 Java 源代码中的任何地方只使用 2147483648 将无法编译,因为没有任何后缀,文字应该是一个有效的 int,而这个数字对于 int 来说太大了。