代码之家  ›  专栏  ›  技术社区  ›  jjnguy Julien Chastang

Java int分割让我困惑

  •  10
  • jjnguy Julien Chastang  · 技术社区  · 16 年前

    我正在进行非常简单的整数除法运算,得到的结果很奇怪。

    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);
    }
    

    这里发生了什么事?

    3 回复  |  直到 16 年前
        1
  •  22
  •   Greg Hewgill    16 年前

    0200 八进制 (基数8)恒定。它等于128(十进制)。

    Section 3.10.1 of the Java Language Specification :

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

        2
  •  6
  •   moogs    16 年前

    值0200是八进制,即 以十进制表示。

    Primitive Data Types

        3
  •  1
  •   jjnguy Julien Chastang    16 年前

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

    如果我做一个 Integer.parseInt("0200") ,我明白了 200 作为o/p。

    你好吗?!

    推荐文章