帶前導零的整數文字的解釋
帶前導零的整數文字在Java 中可能會出現意外的行為,表現出與對應的數值不同的數值沒有前導零。此行為源自於將前導零解釋為基本前綴。
當數字文字以零為前綴時,它被解釋為八進位(以 8 為基數)數字。這是因為在八進位表示法中,數字的範圍可以是 0 到 7。因此,「0123」代表八進制數 123。
要將這個八進制數轉換為其等值的十進制數,需要將每個數字乘以對應的冪8 並對結果進行求和。對於“0123”,此計算為:
(1 * 8 * 8) + (2 * 8) + (3) = 83
因此,程式碼“System.out.println(0123)”列印 83。
相反,沒有前導的「123」零被解釋為十進制數。十進制數 123 只是其數字和 (1 2 3),即 123。因此,「System.out.println(123)」印出 123。
避免誤解
為了避免整數文字中前導零的意外行為,建議始終以十進制數字開頭非零數字。如果文字打算以 10 為基數表示,則它不應有前導零。
替代基本表示法
雖然八進位不再常用, Java 確實提供了一種使用「0x」前綴指定十六進位(以16 為基數)數字的方法。例如「0x123」代表十六進位數123,相當於十進制數291。
以上是為什麼 Java 整數文字中的前導零會改變它們的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!