Interpretation von Ganzzahlliteralen mit führenden Nullen
Ganzzahlliterale mit führenden Nullen können sich in Java unerwartet verhalten und einen anderen numerischen Wert als ihre Gegenstücke anzeigen ohne führende Nullen. Dieses Verhalten ergibt sich aus der Interpretation führender Nullen als Basispräfix.
Wenn einem numerischen Literal eine Null vorangestellt wird, wird es als Oktalzahl (Basis 8) interpretiert. Dies liegt daran, dass in der Oktalschreibweise Zahlen im Bereich von 0 bis 7 liegen können. Somit stellt „0123“ die Oktalzahl 123 dar.
Um diese Oktalzahl in ihr Dezimaläquivalent umzuwandeln, wird jede Ziffer mit ihrer entsprechenden Potenz multipliziert von 8 und die Ergebnisse werden summiert. Für „0123“ lautet diese Berechnung:
(1 * 8 * 8) + (2 * 8) + (3) = 83
Daher gibt der Code „System.out.println(0123)“ 83 aus.
Im Gegensatz dazu „123“ ohne Vorzeichen Null wird als Dezimalzahl interpretiert. Die Dezimalzahl 123 ist einfach die Summe ihrer Ziffern (1 2 3), also 123. Somit gibt „System.out.println(123)“ 123 aus.
Fehlinterpretationen vermeiden
Um das unerwartete Verhalten führender Nullen in ganzzahligen Literalen zu vermeiden, wird empfohlen, Dezimalzahlen immer mit zu beginnen eine Ziffer ungleich Null. Wenn ein Literal in der Basis 10 ausgedrückt werden soll, sollte es keine führende Null haben.
Alternative Basisschreibweisen
Während Oktal nicht mehr häufig verwendet wird, Java bietet eine Möglichkeit, hexadezimale Zahlen (Basis 16) mit dem Präfix „0x“ anzugeben. Beispielsweise stellt „0x123“ die Hexadezimalzahl 123 dar, die der Dezimalzahl 291 entspricht.
Das obige ist der detaillierte Inhalt vonWarum ändern führende Nullen in Java-Ganzzahlliteralen ihren Wert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!