簡體   English   中英

為什么Java SE 1.7中的數字文字中的下划線在Octal和Hexadecimal中有不同的規則? Octal文字是否違反了規則?

[英]Why Underscores in Numeric Literals in Java SE 1.7 Rules are different in Octal and Hexadecimal? Isn't Octal literal violating the rule?

根據oracle doc下划線不能放在一個很好的數字的開頭。 但是當涉及Octal Number時,我們可以在開頭放下下划線。 這不奇怪嗎?

int x1 = 0x_52;            // Invalid; cannot put underscores at the beginning of a number
int x2 = 0_52;             // OK (octal literal)

規則是:

允許下划線作為表示整數的數字之間的分隔符。

對於帶有基數前綴的文字,對於十六進制/二進制,表示用於表示整數數字有什么不同:

...整數由數字的0x或0B字符之后和任何類型的后綴之前僅表示。 因此, 下划線可能不會在0x或0b之后立即出現,或者在數字的最后一位之后出現

對於Octal來說 ,規則是不同的:

在十進制或八進制文字中, 整數由任何類型后綴之前的文字中的所有數字表示 因此,下划線可能不會出現在數字的第一個數字之前或最后一個數字之后。 下划線可能出現在八進制數字中的初始值0之后(因為0是表示整數的一部分的數字),並且在非零十進制文字中的初始非零數字之后。

參考: https//docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM