ホームページ > Java > &#&チュートリアル > Java 整数リテラルの先頭のゼロによって値が変わるのはなぜですか?

Java 整数リテラルの先頭のゼロによって値が変わるのはなぜですか?

Barbara Streisand
リリース: 2024-12-29 21:29:14
オリジナル
872 人が閲覧しました

Why Do Leading Zeros in Java Integer Literals Change Their Value?

先頭にゼロがある整数リテラルの解釈

先頭にゼロがある整数リテラルは、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート