为什么以下工作?
int a=1_2_3_4;
System.out.println(a); // 1234
答案 0 :(得分:4)
数字文字在JLS 3.10.1中指定。
十进制数字是单个ASCII数字0,表示整数零,或者由1到9的ASCII数字组成,可选地后跟一个或多个从0到9的ASCII数字,其中散布着下划线,表示正整数。
[...]
十六进制数字由前导ASCII字符0x或0X后跟一个或多个散布有下划线的ASCII十六进制数字组成,并且可以表示正整数,零或负整数。
[...]
八进制数字由ASCII数字0后跟一个或多个以下划线散布的ASCII数字0到7组成,并且可以表示正整数,零或负整数。
[...]
二进制数字由前导ASCII字符0b或0B组成,后跟一个或多个散布有下划线的ASCII数字0或1,并且可以表示正整数,零或负整数。
如果你问为什么下划线不必是十进制文字的三位数组,不同的文化将数字组合不同 - 当然对于十六进制和二进制文字,根据用途,你可能想要各种不同的明显分组。