Java中long字面量必须加L或l后缀,支持十进制、十六进制(0x)、二进制(0b)和八进制(0),可使用下划线增强可读性(JDK7+),但禁止出现在开头、结尾或连续出现。

Java 中 long 类型字面量必须显式声明为 long,否则整数字面量默认是 int 类型,超出 int 范围或用于需要 long 的上下文时会编译失败。
必须加 L 或 l 后缀
所有 long 字面量需在数字末尾添加字母 L(推荐大写)或 l(不推荐,易与数字 1 混淆)。编译器据此识别其类型:
-
long x = 1234567890123L;✅ 推荐写法 -
long y = 0xFF00_FF00L;✅ 十六进制 + 下划线 + L -
long z = 0b1100_1010_0001L;✅ 二进制 + 下划线 + L -
long a = 1000000;❌ 编译通过(因未超 int 范围),但类型是 int,赋值给 long 属隐式转换,不是 long 字面量 -
long b = 3000000000;❌ 编译错误:超出 int 范围且无后缀
支持多种进制格式
long 字面量可使用十进制、十六进制(0x 或 0X)、二进制(0b 或 0B),八进制(0 开头)也合法但已不推荐:
- 十进制:
long id = 9223372036854775807L; - 十六进制:
long mask = 0xFFFF_FFFF_FFFF_FFFFL; - 二进制:
long flags = 0b1010_1100_0011_1111_0000_1111_1100_1010L; - 八进制(慎用):
long oct = 0777777777777777777777L;
下划线增强可读性(Java 7+)
可在数字之间插入下划线,提升长数值的可读性,但有严格位置限制:
- ✅ 允许:
1_000_000_000L、0xFF_FF_00_00L、0b1100_1010L - ❌ 禁止:
_1000L(开头)、1000_L(紧贴后缀)、0x_FFL(紧贴前缀)、1__000L(连续下划线) - ⚠️ 注意:下划线纯属源码语法糖,编译后完全消失,运行时与无下划线版本完全一致
常见错误与提醒
避免以下典型问题:
- 混淆
l和1:写成123l可能被误读为1231,务必用123L - 遗漏后缀导致编译失败:如
long t = 2147483648;(int最大值是 2147483647)→ 报错 - JDK 版本不足:下划线特性要求 JDK ≥ 7;若构建配置设了
-target 6,该特性会被禁用 - 调试时看不到下划线:IDE 和运行时显示的值始终是纯数字,不含任何下划线
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











