13. Java 数值字面量中的下划线(_)用法
Java 7 及以上版本允许在数值字面量中使用 _(下划线)作为分隔符,提高可读性。下划线不会影响数值本身的值,它只是增强代码的可读性。
1️⃣ 下划线的基本规则
✅ 可以在 数字之间 添加 _
int million = 1_000_000; // ✅ 1000000
long creditCard = 1234_5678_9012_3456L; // ✅
float pi = 3.14_159F; // ✅
❌ 不能放在:
- 数字的开头或结尾
- 浮点数的小数点前后
L、F、D等后缀前- 进制前缀(
0x、0b)后
int error1 = _1000; // ❌ 错误:不能放在开头
int error2 = 1000_; // ❌ 错误:不能放在结尾
float error3 = 3_.14F; // ❌ 错误:不能紧贴小数点
long error4 = 1234_5678_9012_3456_L; // ❌ 错误:不能紧贴 `L`
int error5 = 0_x52; // ❌ 错误:不能放在 `0x` 后
2️⃣ 正确使用下划线的示例
✅ 适用于大数值,提高可读性
long phoneNumber = 123_456_7890L; // ✅ 电话号码
long creditCardNumber = 1234_5678_9012_3456L; // ✅ 信用卡号
int binary = 0b1101_0010_0110_1001; // ✅ 二进制数
✅ 适用于 hex(十六进制)、binary(二进制)
long hexBytes = 0xFF_EC_DE_5E; // ✅ 16 进制
long maxLong = 0x7fff_ffff_ffff_ffffL; // ✅ 16 进制最大 long 值
byte nybbles = 0b0010_0101; // ✅ 二进制
long bytes = 0b11010010_01101001_10010100_10010010; // ✅ 二进制
✅ 适用于浮点数
float pi = 3.14_159F; // ✅ 科学计算
double avogadro = 6.022_140_76e23; // ✅ 科学计数法
3️⃣ 错误示例
❌ 不允许的下划线用法
float pi1 = 3_.1415F; // ❌ 错误:不能紧贴小数点
float pi2 = 3._1415F; // ❌ 错误:不能紧贴小数点
long num1 = 999_99_9999_L; // ❌ 错误:不能紧贴 `L`
int x1 = _52; // ❌ 错误:不能在数字开头
int x2 = 52_; // ❌ 错误:不能在数字结尾
int x3 = 0_x52; // ❌ 错误:不能在 `0x` 后
int x4 = 0x_52; // ❌ 错误:不能紧跟 `0x`
int x5 = 0x52_; // ❌ 错误:不能在十六进制数字结尾
4️⃣ 总结
| 正确用法 | 错误用法 |
|---|---|
int num = 1_000_000; | int num = _1000;(不能放开头) |
float pi = 3.14_159F; | float pi = 3_.14F;(不能紧贴小数点) |
long hex = 0xFF_EC_DE_5E; | int hex = 0_x52;(不能放 0x 后) |
byte b = 0b1101_0101; | byte b = 0b_1010;(不能放 0b 后) |
✅ 最佳实践
- 用于分隔大数字(如信用卡号、二进制、十六进制)
- 不要放在开头、结尾、小数点旁、进制前缀后
- 确保不会影响代码解析
🚀 希望这个讲解能帮你彻底掌握 Java 数值字面量中的 _! 🎯