Java long 没有后缀[重复]
Posted
技术标签:
【中文标题】Java long 没有后缀[重复]【英文标题】:Java long without suffix [duplicate] 【发布时间】:2021-06-06 07:16:17 【问题描述】:我读过要声明一个long,你需要在数字后缀l
或L
到目前为止,一切都很好。但是,如果我省略了这个后缀,会发生什么?
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,并为其分配一个 int
(100
是一个 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