Java 7起支持数字字面量中使用下划线提升可读性,适用于大整型边界值、常量等;需合法放置(仅数字间)、按语义分组,是纯编译期语法糖。

Java 7 起支持在数字字面量中使用下划线 _,它不改变数值本身,只提升源码可读性——尤其对大整型(如 int、long)的边界值、常量或配置参数,效果显著。
整型取值范围相关数值天然适合加下划线
比如 Integer.MAX_VALUE 是 2147483647,直接写易数错位;Long.MAX_VALUE 更是 9223372036854775807,共19位。用下划线分组后,一眼就能识别数量级和结构。
按语义逻辑分组,比机械千分位更有效
-
int最大值:2_147_483_647→ 清晰对应21 亿 +,避免误读为 214 亿 -
long最大值:9_223_372_036_854_775_807L→ 每 3~4 位一隔,匹配人类短时记忆习惯 -
byte/short边界:127写成127即可,无需下划线;但32_767(Short.MAX_VALUE)加一组更稳妥
二进制与十六进制掩码要按字节或字段对齐
处理位运算、协议字段、标志位时,下划线位置应反映实际结构:
-
0b1000_0000_0000_0000_0000_0000_0000_0000→Integer.MIN_VALUE,每 8 位一组,对应一个字节 -
0x7FFF_FFFF→Integer.MAX_VALUE的十六进制形式,按字节(7F FF FF FF)分隔,便于核对高低字节
避开语法雷区,确保编译通过
下划线只能出现在两个数字字符之间,以下写法会报错 error: illegal underscore:
- 开头或结尾:
_2147483647、2147483647_ - 紧邻小数点或后缀:
2_147_483_647.0(浮点)、2147483647_L(L前不能有_) - 紧贴进制前缀:
0x_7FFFFFFF(错误),应写0x7FFF_FFFF - 连续多个下划线:
2__147_483_647不合法,2_1_4_7_4_8_3_6_4_7虽合法但不推荐
实际编码中建议统一风格
- 时间毫秒:
30_000(30 秒)、60_000(1 分钟) - 缓冲区大小:
8_192(8KB)、65_536(64KB) - 文件大小阈值:
100_000_000(约 100MB) - 掩码定义:
0b1111_0000_0000_0000(高 4 位有效)
下划线是纯编译期语法糖,运行时完全等价。反编译后不会保留,也不影响性能或字节码体积。关键是用在真正需要快速识别的“关键大整数”上,而不是所有数字都加。
立即学习“Java免费学习笔记(深入)”;


















