根据oracle doc下划线不能放在数字的开头,就可以了。但是,当涉及八进制数时,我们可以在下划线处加下划线。是不是很奇怪?
int x1 = 0x_52; // Invalid; cannot put underscores at the beginning of a number
int x2 = 0_52; // OK (octal literal)
答案 0 :(得分:2)
规则是:
下划线允许用作表示整数的数字之间的分隔符。
对于以十六进制/二进制表示的带有基数前缀的文字,表示整数的数字的构成有所不同:
...整数只能由0x或0b字符之后和任何类型后缀之前的数字表示。因此,下划线可能不会立即出现在0x或0b之后,或数字的最后一位数字之后。。
Octtal 的规则不同:
在十进制或八进制文字中,整数由文字中所有类型的数字表示,位于任何类型后缀之前。因此,下划线可能不会出现在数字的第一个数字之前或最后一个数字之后。 下划线可能出现在八进制数字的开头0之后(因为0是表示整数部分的数字),并且出现在非零十进制文字的开头非零数字之后。
参考:https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.1