【发布时间】:2012-08-25 18:26:25
【问题描述】:
好的,我已经用 Java 编程了三年了,现在我认为自己非常有经验。然而,在查看 Java SE 源代码时,我遇到了一些我没想到的事情:
在classDouble:
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 和P。我知道您可以使用后缀将数字强制为double、long、float 等,但我从未遇到过p 或P。我检查了the 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
【问题讨论】:
-
JLS 是您的朋友。当你发现一个你不理解的语言元素时,不要去教程,去指定语言的那个。
标签: java primitive prefix primitive-types modifier