Java Wierd语法-数字之间的下划线

Java Wierd语法-数字之间的下划线,java,syntax,Java,Syntax,按照我的惯例,当我遇到这个问题时,我一直在编写更多的UIL Java实践表: int _ = 8; System.out.println(5_5); 问题是“以下代码段的输出是什么?” 我的第一个猜测是语法错误,但正确的回答实际上是55 为什么会这样?在Java 7中,数字之间可以有下划线,以提高可读性: 来自和: 允许下划线作为表示整数的数字之间的分隔符 对于浮点文字: 允许使用下划线作为表示整数部分的数字之间、表示分数部分的数字之间以及表示指数的数字之间的分隔符 例如,100000000现

按照我的惯例,当我遇到这个问题时,我一直在编写更多的UIL Java实践表:

int _ = 8;
System.out.println(5_5);
问题是“以下代码段的输出是什么?”

我的第一个猜测是语法错误,但正确的回答实际上是55


为什么会这样?

在Java 7中,数字之间可以有下划线,以提高可读性:

来自和:

允许下划线作为表示整数的数字之间的分隔符

对于浮点文字:

允许使用下划线作为表示整数部分的数字之间、表示分数部分的数字之间以及表示指数的数字之间的分隔符

例如,
100000000
现在可以写成
1\u 000\u 000
。所以,它对眼睛更好,不是吗

类似地,您可以编写-
0x7fff\u ffff
0b0111\u 1111


关于变量名,
\uu
是一个有效的变量名。根据Java标准,变量名应以
$
\uuu
字母开头。

+1不知道不能将其用于浮点。@duffymo。我认为这主要是为了可读性。写
1_000_000_000
100000000
可读性更好。这对于像
1_000_000_000
这样的长数字很有意义。我习惯于写
1000*1000*1000
@RohitJain“可读性更好”。@PeterLawrey。下划线似乎也适用于浮点文本-
12.145\u 34
编译得非常好。尽管JLS中没有规定:(我想,我会再看一看。”阿尔沙吉:你有没有想过为什么要缩短那个URL?这可能是一个常见问题。