[英]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.