关于Java Integer实例化时传入带下划线数值的原理咨询
Java数值字面量下划线的原理解析
你提到的疑问代码
Integer i=new Integer(100_00);
别担心,这完全是Java的基础语法特性,一点都不复杂!
这个下划线其实是Java 7及以后版本引入的数字字面量分隔符,核心作用就是让长数字看起来更易读,和数字本身的数值没有任何关联。
关键特性说明
- 下划线只能放置在数字的数字位之间,不能出现在数字的开头、结尾,也不能挨着小数点、正负号、进制标识(比如
0x、0b)这些符号 - 编译器在编译阶段会自动忽略所有的下划线,所以
100_00和10000在编译器眼中是完全等价的,最终都会被解析为整数10000 - 这个特性适用于所有数值类型,比如:
- 十进制整数:
1_000_000(直观表示一百万) - 十六进制:
0xFF_EC_DE_5E(更易区分字节段) - 浮点数:
3.1415_9265_3589(拆分小数位更清晰)
- 十进制整数:
简单来说,你写new Integer(100_00),编译后生成的字节码和new Integer(10000)完全一致,JVM运行时根本感知不到下划线的存在——它只是Java给开发者提供的一个代码可读性优化工具而已~
内容的提问来源于stack exchange,提问作者Nishant_Singh
相关产品推荐
相关产品推荐

