なぜこれがコンパイルされるのか疑問に思いますか?コンパイルされるので、それはどういう意味ですか?
System.out.println(0xp0); // p?
出力:
0.0
JLSはそれを説明しています:
HexadecimalFloatingPointLiteral:
HexSignificand BinaryExponent FloatTypeSuffixopt
HexSignificand:
HexNumeral
HexNumeral .
0 x HexDigitsopt . HexDigits
0 X HexDigitsopt . HexDigits
BinaryExponent:
BinaryExponentIndicator SignedInteger
BinaryExponentIndicator:one of
p P
上記に基づいて、私は、しかし、.HexDigit
の前に必須を期待しp
ます。
これは浮動小数点の16進リテラルです。
16進浮動小数点リテラルの場合、少なくとも1桁(整数または小数部のいずれか)が必要であり、指数は必須であり、浮動小数点型の接尾辞はオプションです。指数は、ASCII文字のpまたはPと、それに続くオプションの符号付き整数で示されます。
こちらの仕様をご覧ください。