数字文字

Numeric literals

我正在看一本关于Java的书,我发现以下几点不清楚,请帮助我:

  1. 对于非10进制(0b, 0, 0x)表示的整型字面量是否可以使用代表Long的L后缀?

  2. 对于浮点数,我们可以使用十进制以外的任何其他基数吗?如果是,我们可以为 10 以外的其他基数使用 F 或 D 指定 float 或 double 吗? 如果是,除 10 以外的其他基数,我们可以使用科学记数法还是只允许使用小数点?

1) 是的,十六进制、八进制和二进制也是可能的。参见 jls-3.10.1

2) 是的,您可以使用十六进制表示法,但您只能使用 二进制指数 并且指定指数是 必需的 。参见 jls-3.10.2

示例:

0xFF.Ap0d
0xFF.1p0f
0xFF.Ap1d
0xFF.Ap-1f
0xFF.Ap-1
0x.1p16

如果您使用 System.out.println 打印这些文字,您将得到:

255.625
255.0625
511.25
127.8125
63.90625
4096.0

二进制指数的含义如下:

pP前面的值乘以2^z,其中zp(或P).整数采用 十进制 格式。例如。 0xFF.1Ap0101d 代表 255.1015625 * 2^101.