错误地添加下划线如下:
int i = 1_5;
但没有编译错误。为什么会这样?输出就像是忽略下划线一样。那为什么Java中有这样的功能?
答案 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;