Java int division令我困惑

时间:2009-11-10 04:36:38

标签: java int division octal

我正在进行非常简单的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)

3 个答案:

答案 0 :(得分:22)

0200八进制(基数为8)常量。它等于128(十进制)。

来自Section 3.10.1 of the Java Language Specification

  

八进制数字由ASCII数字0后跟一个或多个ASCII数字0到7组成,可以表示正整数,零或负整数。

答案 1 :(得分:6)

值0200是八进制,十进制 128

有关详细信息,请参阅Primitive Data Types解释的文字部分。

答案 2 :(得分:1)

在这里观察到一个有趣的行为。

如果我执行了Integer.parseInt("0200"),我会将200作为o / p。

Howzzat?!