先頭にゼロがある整数リテラルの解釈
先頭にゼロがある整数リテラルは、Java で予期しない動作をし、対応するものとは異なる数値を示す可能性があります。先行ゼロなし。この動作は、先頭のゼロが基底接頭辞として解釈されることに起因します。
数値リテラルの前にゼロが付いている場合、8 進数 (基数 8) の数値として解釈されます。これは、8 進数表記では、数値の範囲が 0 から 7 であるためです。したがって、「0123」は 8 進数 123 を表します。
この 8 進数を同等の 10 進数に変換するには、各桁に対応する累乗を乗算します。 8 の結果を合計します。 "0123" の場合、この計算は次のようになります:
(1 * 8 * 8) + (2 * 8) + (3) = 83
したがって、コード "System.out.println(0123)" は 83 を出力します。
対照的に、先頭なしの "123"ゼロは 10 進数として解釈されます。 10 進数 123 は、単にその桁 (1 2 3) の合計であり、123 です。したがって、「System.out.println(123)」は 123 を出力します。
誤解を避けるため
整数リテラルの先行ゼロによる予期せぬ動作を回避するには、 10 進数は常にゼロ以外の数字で始めることをお勧めします。リテラルを基数 10 で表現する場合は、先頭にゼロを付けてはいけません。
代替基数表記
8 進数は現在では一般的に使用されていませんが、 Java では、「0x」プレフィックスを使用して 16 進数 (基数 16) を指定する方法が提供されています。たとえば、「0x123」は 16 進数の 123 を表し、10 進数の 291 に相当します。
以上がJava 整数リテラルの先頭のゼロによって値が変わるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。