10

私は非常に単純な int 除算を行っていますが、奇妙な結果が得られています。

このコード2は期待どおりに出力されます。

public static void main(String[] args) {
    int i = 200;
    int hundNum = i / 100;
    System.out.println(hundNum);
}

このコードは予期しない1ように出力されます。

public static void main(String[] args) {
    int i = 0200;
    int hundNum = i / 100;
    System.out.println(hundNum);
}

ここで何が起こっているのですか?

(Windows XP Pro、Eclipse 3.4.1 で動作する Java 1.6)

4

3 に答える 3

22

02008 進数(基数 8) の定数です。これは 128 (10 進数) です。

Java言語仕様のセクション3.10.1から:

8 進数は、ASCII 数字 0 と、その後に続く 1 つ以上の ASCII 数字 0 ~ 7 で構成され、正、ゼロ、または負の整数を表すことができます。

于 2009-11-10T04:38:39.157 に答える
6

値 0200 は 8 進数で、10 進数では128です。

詳細については、プリミティブ データ型の説明のリテラル セクションを参照してください。

于 2009-11-10T04:42:30.583 に答える
1

ここで興味深い動作が観察されました。

を実行するInteger.parseInt("0200")と、200o/p となります。

ハウザット?!

于 2009-11-10T06:11:45.943 に答える