黑马程序员技术交流社区
标题:
JDK1.7新特性之数字字面量
[打印本页]
作者:
男人你得有范
时间:
2016-7-16 18:27
标题:
JDK1.7新特性之数字字面量
如果Java源代码中有一个很长的数值字面量,开发人员在阅读这段代码时需要很费力地去分辨数字的位数,以知道其所代表的数值大小。在现实生活中,当遇到很长的数字的时候,我们采取的是分段分隔的方式。比如数字500000,我们通常会写成500,000,即每三位数字用逗号分隔。利用这种方式就可以很快知道数值的大小。这种做法的理念被加入到了Java 7中,不过用的不是逗号,而是下划线“_”。
在Java 7中,数值字面量,不管是整数还是浮点数,都允许在数字之间插入任意多个下划线。这些下划线不会对字面量的数值产生影响,其目的主要是方便阅读。一些典型的用法包括每三位数字插入一个下划线来分隔,以及多行数值的对齐,如代码清单所示。
代码清单 在数值字面量中使用下划线的示例
import static java.lang.System.out;
public class Underscore {
public void display() {
out.println(1_500_000); //输出1500000
double value1 = 5_6.3_4;
int value2 = 89_3___1;
out.println(value1); //输出56.34
out.println(value2); //输出8931
}
}
虽然下划线在数值字面量中的应用非常灵活,但有些情况是不允许出现的。最基本的原则是下划线只能出现在数字中间,也就是说前后都必须是数字。所以“_100”、“120_”、“0b_101”、“0x_da0”这样的使用方式都是非法的,无法通过编译。这样限制的动机在于降低实现的复杂度。有了这个限制之后,Java编译器只需要在扫描源代码的时候,将所发现的数字中间的下划线直接删除就可以了。这样就和没有使用下划线的形式是相同的。如果不添加这个限制,那么编译器需要进行语法分析才能做出判断。比如“_100”可能是一个整数字面量100,也可能一个变量名称。这就要求编译器的实现做出更加复杂的改动。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2