ホームページ > Java > &#&チュートリアル > Java が先頭にゼロのある整数リテラルを 8 進数として解釈するのはなぜですか?

Java が先頭にゼロのある整数リテラルを 8 進数として解釈するのはなぜですか?

Barbara Streisand
リリース: 2024-12-21 11:18:12
オリジナル
982 人が閲覧しました

Why Does Java Interpret Integer Literals with Leading Zeroes as Octal?

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

Java では、先頭にゼロがある整数リテラルは 8 進数 (base-8) 数値として解釈されます。この動作は、特に 10 進数 (基数 10) リテラルと比較した場合、不可解になる可能性があります。

次のコードを考えてみましょう:

1

2

System.out.println(0123); // Prints 83

System.out.println(123); // Prints 123

ログイン後にコピー

説明:

  • 0123 は先頭のゼロで始まり、8 進リテラルを示します。 8 進数から 10 進数に変換するには、各桁に対応する 8 の累乗を乗算し、その結果を合計します。

1

(1 * 8 * 8) + (2 * 8) + (3) = 83

ログイン後にコピー

したがって、0123 は 10 進数の 83 として解釈されます。

  • 123 には先頭のゼロがないため、10 進リテラルとして解釈され、期待される値になります。

8 進数の解釈の回避:

予期しない 8 進数の解釈を回避するには、8 進数を表すことを意図していない整数リテラルから先頭のゼロを省略します。 .

16 進数リテラル:

Java は、接頭辞 0x が付く 16 進数 (base-16) リテラルもサポートします。例:

1

System.out.println(0x123); // Prints 291

ログイン後にコピー

この場合、0x123 は 16 進値 123 を表し、10 進数の 291 に相当します。

以上がJava が先頭にゼロのある整数リテラルを 8 進数として解釈するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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