跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

解决Java数值字面量中使用下划线提升阅读性规范

Java 7起支持数值字面量中用下划线分隔数字以提升可读性,但下划线只能位于数字之间,不可在开头、结尾、小数点旁、进制前缀或类型后缀旁,不可连续出现,且编译时被忽略,无运行时开销。

Java 7 开始支持在数值字面量中使用下划线(_)来分隔数字,提升长数字的可读性,但必须遵守明确的语法规范,否则编译报错。

下划线只能出现在数字之间下划线不能出现在数值的开头、结尾,也不能紧邻小数点、进制前缀(如0x、0b)或浮点类型后缀(如F、L)。

✅ 正确:int million = 1_000_000;、long hex = 0xFF_FF_FF_FFL;、double pi = 3.141_592_6;❌ 错误:int x = _100;(开头)、int y = 100_;(结尾)、double z = 3._14;(紧邻小数点)、long w = 0x_F;(紧邻前缀)

支持所有基本数值类型字面量整型(十进制、十六进制、八进制、二进制)、浮点型(float、double)均允许使用下划线,但需符合各自字面量规则。

二进制:

int mask = 0b1100_1010_0001_1111;

十六进制:

long addr = 0x7fff_ffff_ffff_ffffL;

科学计数法:

double d = 6.022_140_76e23;(下划线可放在系数或指数中,但不能在e或E旁边)

多个连续下划线不合法Java 不允许两个及以上连续下划线,也不允许下划线单独成段。每个下划线必须严格位于两个数字字符之间。

立即学习“Java免费学习笔记(深入)

”;

✅ 正确:long n = 1_2_3_4_5;❌ 错误:long m = 1__2;、long p = 1_ _2;、long q = 1_______2;编译期处理,运行时无开销下划线纯粹是源码层面的语法糖,编译器会直接忽略所有下划线,生成的字节码与未加下划线的字面量完全一致,不影响性能和内存布局。

例如:

int a = 1_000_000;和int b = 1000000;编译后等价调试时变量值显示也不含下划线,IDE 通常会在编辑器中高亮显示合法下划线位置辅助校验

相关文章