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

Wil*_*ood 7 java syntax

按照惯例,当我遇到这个问题时,我一直在研究更多的UIL Java练习表:

int _ = 8;
System.out.println(5_5);
Run Code Online (Sandbox Code Playgroud)

问题是"以下代码片段的输出是什么?"

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

为什么是这样?

Roh*_*ain 11

从Java 7开始,您可以在数字之间加下划线,以提高可读性:

JLS - 第3.10.1节JLS第3.10.2节:

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

对于浮点字面值:

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

例如,1000000000现在可以写成1_000_000_000.所以,对眼睛来说更好,不是吗.

同样你可以写 - 0x7fff_ffff, 0b0111_1111.

关于变量名,_是一个有效的变量名.按照Java标准,一个变量名应该以一个开始$,_或者一个letter.

  • +1不知道你不能用它来浮点数. (3认同)
  • @duffymo.我认为这主要是出于可读性目的.写"1_000_000_000"比"1000000000"更易读. (2认同)
  • @PeterLawrey.看起来像下划线也适用于浮点文字 - "12.145_34"编译完全正常.虽然它没有在JLS中指定.:(我猜,我会深入了解一下. (2认同)