好吧,我已经用 Java 编程了三年的大部分时间,现在,我认为自己非常有经验。然而,在查看 Java SE 源代码时,我遇到了一些我没想到的事情:
在class
Double
:
public static final double MIN_NORMAL = 0x1.0p-1022; // 2.2250738585072014E-308
public static final double MIN_VALUE = 0x0.0000000000001P-1022; // 4.9e-324
我没想到这一点,无法找出它的意思。如果你不知道,我指的是在这些数字之后,减法运算符之前的p
and 。P
我知道您可以使用后缀将数字强制为double
, long
,float
等,但我从未遇到过p
or P
。我检查了 Java API,但没有提及。某处是否有完整的 Java 原始数字文字修饰符列表?有人认识他们吗?
作为参考,以下是我使用或遇到的那些,其目的用粗体带问号(#
代表各自限制内的任意数字)使我难以理解:
后缀:
#
= 32 位整数int
#L
= 64 位整数long
#l
= 另一个 64 位整数l
?#f
= 32 位浮点float
#F
= 另一个 32 位浮点数float
?#d
= 64 位浮点double
#D
= 另一个 64 位浮点数double
?#e#
= 科学记数法#E#
= 另一个科学记数法?#p
= ?#P
= ?- 还有吗?
前缀:
0b#
= 二进制(以 2 为基数)文字0B#
=另一个二进制(基数2)文字?0#
= 八进制(以 8 为基数)文字#
= 十进制(以 10 为底)文字0x#
= 十六进制(以 16 为基数)文字0X#
= 另一个十六进制(以 16 为底)文字?- 还有吗?
其他(这些有后缀或前缀吗?):
(byte)#
= 8 位整数byte
(short)#
= 16 位整数short
(char)#
- 32 位字符char