13. Java 数值字面量中的下划线(_)用法

81 阅读3分钟

13. Java 数值字面量中的下划线(_)用法

Java 7 及以上版本允许在数值字面量中使用 _(下划线)作为分隔符,提高可读性。下划线不会影响数值本身的值,它只是增强代码的可读性


1️⃣ 下划线的基本规则

可以在 数字之间 添加 _

int million = 1_000_000;   // ✅ 1000000
long creditCard = 1234_5678_9012_3456L;  // ✅
float pi = 3.14_159F;   // ✅

不能放在

  1. 数字的开头或结尾
  2. 浮点数的小数点前后
  3. LFD 等后缀前
  4. 进制前缀(0x0b)后
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 数值字面量中的 _ 🎯