Search code examples
javaintdivisionoctal

Java int division confusing me


I am doing very simple int division and I am getting odd results.

This code prints 2 as expected:

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

This code prints 1 as not expected:

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

What is going on here?

(Windows XP Pro, Java 1.6 running in Eclipse 3.4.1)


Solution

  • The value 0200 is an octal (base 8) constant. It is equal to 128 (decimal).

    From Section 3.10.1 of the Java Language Specification:

    An octal numeral consists of an ASCII digit 0 followed by one or more of the ASCII digits 0 through 7 and can represent a positive, zero, or negative integer.