数字之间的下划线

2022-09-03 04:50:18

错误地添加了下划线,如下所示:

int i = 1_5;

但没有编译错误。为什么会这样?输出就像忽略下划线一样。那么为什么在Java中会有这样的功能呢?


答案 1

请参见数字文本中的下划线

在 Java SE 7 及更高版本中,任意数量的下划线字符 (_) 都可以出现在数字文本中数字之间的任何位置。例如,此功能使您能够在数字文本中分隔数字组,这可以提高代码的可读性。

你没有给出一个很好的例子,因为即使没有将数字分隔为,15也是可读的。但是以数字为例:1000000000000,如果不计算数字,很难说出它是什么,所以你可以这样做:1_5

100_000_000_000

这使得识别数字更容易。

在您的示例中,请尝试:

int i = 1_5;
System.out.println(i); //Prints 15

答案 2

这是自Java 7以来有效的新功能。它提高了文本值的可读性。

根据Mala Gupta的OCA_Java_SE_7_Programmer_I_Certification_Guide_Exam_1Z0-803:

请注意在数字文本值中使用下划线。以下是一些规则:

1) 不能用下划线开始或结束文本值。

2) 不能在前缀 0b、0B、0x 和 0X 之后放置下划线,这些前缀用于定义二进制和十六进制文本值。

3) 您可以在前缀 0 之后放置一个下划线,该前缀用于定义八进制文本值。

4) 不能将下划线放在 L 后缀之前(L 后缀用于将文本值标记为长)。

5)您不能在需要数字字符串的位置使用下划线。

有效示例:

long baseDecimal = 100_267_760;
long octVal = 04_13;
long hexVal = 0x10_BA_75;
long binVal = 0b1_0000_10_11;

无效示例:

int intLiteral = _100;
int intLiteral2 = 100_999_;
long longLiteral = 100_L;

推荐