Java 7起支持下划线字面量,可在数字间添加下划线提升可读性,但不可在开头、结尾、小数点或进制前缀旁等非法位置使用;编译时下划线被忽略,运行时与无下划线数值完全等价。

Java 7 开始支持下划线字面量(Underscore Literals),允许在数字字面量中插入下划线 _,以增强长数字的可读性。下划线本身不参与数值计算,仅作为视觉分隔符,编译时会被忽略。
哪些位置可以加下划线
下划线只能出现在数字之间,不能出现在以下位置:
- 开头或结尾(如 _100 或 100_ 是非法的)
- 紧邻小数点前后(如 3_.14 或 3._14 不合法)
- 紧邻进制前缀之后(如 0x_A 或 0b__101 不合法)
- 紧邻浮点数指数符号(如 1e_3 或 1.2_e3 不合法)
常见使用场景与写法示例
合理分组能显著提升理解效率,推荐按千位、字节或逻辑单元添加下划线:
-
整数(十进制):
int million = 1_000_000;(比1000000更易识别) -
二进制:
int flags = 0b0001_0010_1100_0000;(每4位一组,对应十六进制习惯) -
十六进制:
long mask = 0xFF00_FF00_FF00_FF00L;(按字节分隔,便于位操作理解) -
浮点数:
double pi = 3.14159_26535_89793;(小数点后每5位一隔,方便核对) -
科学计数法:
double avogadro = 6.022_140_76e23;(系数部分分组清晰)
注意事项与最佳实践
虽然语法灵活,但为保持一致性与可维护性,建议遵循以下原则:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
立即学习“Java免费学习笔记(深入)”;
- 只在需要提升可读性时使用——简单数字如
42或3.14不必加下划线 - 避免连续多个下划线(如
1__000),虽语法允许但易引发歧义 - 团队内统一分组规则(例如:整数按千位
1_000_000,十六进制按字节0x12_34_56_78) - 注意 IDE 和旧版构建工具兼容性(确保 JDK 版本 ≥ 7,且编译器未降级目标版本)
编译与运行验证
下划线纯属源码层面的语法糖,编译后与无下划线的字面量完全等价:
System.out.println(1_000_000 == 1000000); // 输出 true System.out.println(0b1100_0011 == 0xC3); // 输出 true
可放心用于常量定义、配置数值、测试用例等所有字面量出现的上下文。

















