Java int division confusing me

浪尽此生 提交于 2019-11-26 17:12:40

问题


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)


回答1:


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.




回答2:


The value 0200 is an octal, which is 128 in decimal.

For further information, see the literals section of the Primitive Data Types explanation.




回答3:


Observed an interesting behavior here.

If I do an Integer.parseInt("0200"), I get 200 as o/p.

Howzzat ?!



来源:https://stackoverflow.com/questions/1705645/java-int-division-confusing-me

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!