Java long 没有后缀[重复]

Posted

技术标签:

【中文标题】Java long 没有后缀[重复]【英文标题】:Java long without suffix [duplicate] 【发布时间】:2021-06-06 07:16:17 【问题描述】:

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

到目前为止,一切都很好。但是,如果我省略了这个后缀,会发生什么?

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

long l3 = 100; // ?

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

【问题讨论】:

long l3 = 100;100 是整数,l3 是长整数。您可以将一个整数分配给一个长整数,Java 将为您进行对话。 ***.com/questions/17738232/… 【参考方案1】:

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

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

long l3 = 2147483648; //doesn't compile

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

【讨论】:

强制 JLS 参考:整数文字 (JLS § 3.10.1);分配上下文中的原始类型会扩大 (JLS § 5)。

以上是关于Java long 没有后缀[重复]的主要内容,如果未能解决你的问题,请参考以下文章

HiHocoder1415 : 后缀数组三·重复旋律3 & Poj2774:Long Long Message

Java基础一:基本数据类型

poj2774 Long Long Message(后缀数组)

20165233 Java第三章学习总结

Java基础之常量变量数据类型运算符

Java中的文字赋值[重复]