数字之间的下划线
错误地添加了下划线,如下所示:
int i = 1_5;
但没有编译错误。为什么会这样?输出就像忽略下划线一样。那么为什么在Java中会有这样的功能呢?
错误地添加了下划线,如下所示:
int i = 1_5;
但没有编译错误。为什么会这样?输出就像忽略下划线一样。那么为什么在Java中会有这样的功能呢?
请参见数字文本中的下划线:
在 Java SE 7 及更高版本中,任意数量的下划线字符 (_) 都可以出现在数字文本中数字之间的任何位置。例如,此功能使您能够在数字文本中分隔数字组,这可以提高代码的可读性。
你没有给出一个很好的例子,因为即使没有将数字分隔为,15也是可读的。但是以数字为例:1000000000000,如果不计算数字,很难说出它是什么,所以你可以这样做:1_5
100_000_000_000
这使得识别数字更容易。
在您的示例中,请尝试:
int i = 1_5;
System.out.println(i); //Prints 15
这是自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;