ホームページ > Java > &#&チュートリアル > Java では「0123」は「83」と表示されるのに、「123」は「123」と表示されるのはなぜですか?

Java では「0123」は「83」と表示されるのに、「123」は「123」と表示されるのはなぜですか?

DDD
リリース: 2024-12-27 13:13:16
オリジナル
324 人が閲覧しました

Why Does `0123` Print `83` in Java, But `123` Prints `123`?

先頭にゼロがある整数リテラルの不可解な動作

Java では、次のコードに示すように、先頭にゼロがある整数リテラルは予期しない動作を示します。スニペット:

System.out.println(0123); // Prints 83
System.out.println(123);  // Prints 123
ログイン後にコピー

違いの理由

この違いを理解する鍵は、8 進数表現にあります。整数リテラルの先頭のゼロは、リテラルが基数 8 (8 進数) で表現されていることを示します。 8 進数では、各桁は 0 から始まる 8 の累乗を表します。

したがって、リテラル 0123 は次のように 10 進数に変換できます。

(0 * 8³) + (1 * 8²) + (2 * 8) + (3) = 83
ログイン後にコピー

対照的に、リテラル 123 は次のようになります。 10 進数で解釈され、各桁は 10 の累乗を表します。したがって、次のように評価されます。 123.

16 進リテラル

Java は、8 進数に加えて、0x プレフィックスを使用した 16 進数 (base 16) リテラルもサポートします。たとえば、0xFF は 16 進数の 255 を表し、2 進数では 11111111 に相当します。

推奨事項

混乱を避けるため、整数の先頭のゼロを省略することをお勧めします。 8 進数表現が明示的に意図されていない限り、リテラル。そうしないと、リテラルが 8 進数として誤って解釈され、予期しない結果が生じます。

以上がJava では「0123」は「83」と表示されるのに、「123」は「123」と表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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