整型字面量加下划线用于提升数字可读性,十进制按千位分组(如30_000),二进制/十六进制按语义单元对齐(如0b1000_0000、0xff_80_40),仅允许数字间使用,禁止开头、结尾、连续或紧邻前缀/后缀。

整型字面量加下划线,核心是让一串数字“一眼可辨”,尤其在配置超时、内存大小、计数阈值等关键参数时,避免数错零、看混位数。
十进制整数:按千位或业务单位分组
服务响应超时、连接池上限、文件大小限制等常用十进制大数,直接写 30000 容易误判为三万还是三百万;加下划线后变成 30_000,视觉上自然断成“30”和“000”,立刻对应到“30秒”。类似地:
- int maxRetries = 3; —— 简单数字,不加下划线
- int timeoutMs = 30_000; —— 明确是 30 秒(毫秒)
-
long heapBytes = 2_147_483_647L; —— 对应
Integer.MAX_VALUE,每三位一组更易核对 - int bufferSize = 8_192; —— 比 8192 更快识别为 8KB
二进制与十六进制:按语义单元对齐硬件/协议
掩码、标志位、颜色值、寄存器配置等,天然适合按字节(8位)、半字节(4位)划分。下划线不是随意加,而是反映真实位布局:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- int flags = 0b1000_0000_0000_0000_0000_0000_0000_0000; —— 最高位单独一组,一眼看出是开关位
-
int rgb = 0xFF_80_40; —— 红、绿、蓝三通道清晰分离,比
0xFF8040更易校验 - long mask = 0xFF00_FF00_FF00_FF00L; —— 每两个十六进制字符一组,对应一个字节,便于位运算理解
合法位置必须严格遵守
下划线是语法糖,但写错会直接编译失败。只允许出现在两个数字字符之间:
- ✅ 1_000_000、0xFF_FF、0b1010_1100、100_000L
- ❌ _100(开头)、100_(结尾)、0x_A1(紧邻前缀)、100_000_L(紧邻后缀 L)
- ❌ 1__000(连续下划线)、3._14(紧邻小数点,虽整型不涉及,但规则统一)
用在真正需要的地方,别滥用
下划线不是装饰,是为降低认知负担。以下情况建议加:
- 数值 ≥ 1000,且上下文不显式说明单位(如注释缺失或变量名不够清晰)
- 参与配置、常量定义、测试边界值等影响系统行为的关键数字
- 团队已约定统一风格(例如:十进制一律千位分组,十六进制一律按字节)
像 42、100、-1 这类短数字,加了反而干扰阅读。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










