A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如果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,也可能一个变量名称。这就要求编译器的实现做出更加复杂的改动。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马