数字之间的下划线

时间:2015-01-06 13:14:30

标签: java int java-7

错误地添加下划线如下:

int i = 1_5;

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

2 个答案:

答案 0 :(得分:27)

请参阅Underscores in Numeric Literals

  

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

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

100_000_000_000

可以更容易识别号码。

在您的示例中,请尝试:

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

答案 1 :(得分:5)

这是新功能,自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;