好吧,我已经用 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
我没想到这一点,无法找出它的意思。如果你不知道,我指的是在这些数字之后,减法运算符之前的pand 。P我知道您可以使用后缀将数字强制为double, long,float等,但我从未遇到过por 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